简体   繁体   English

React Webpack开发服务器可以工作,但是当我创建产品包时,出现参考错误“ require is not defined”

[英]React webpack dev server works but when I create prod bundle I get reference error “require is not defined”

I am running a react project and have no problem testing with the local dev server, however as soon as I make a production webpack build and load the page in the browser I get a white screen and in console I see an error saying "Uncaught ReferenceError: require is not defined". 我正在运行一个React项目,并且在本地开发服务器上进行测试没有问题,但是,当我进行生产Webpack构建并在浏览器中加载页面后,我得到了白屏,而在控制台中,我看到一条错误消息,内容为“ Uncaught ReferenceError :“未定义”。 When I look into the specific javascript it starts around require("url"), but I don't have any require("url") in any of my javascript source files, so it must be from a module. 当我查看特定的javascript时,它以require(“ url”)开头,但是我的任何javascript源文件中都没有任何require(“ url”),因此它必须来自模块。

Here is the part that the console points to when it throws the error (cleaned up as best as I can) 这是控制台抛出错误时指向的部分(尽我所能清理)

function(e,t){e.exports=require("url")},function(e,t,n){"use 
strict";Object.defineProperty(t,"__esModule",
{value:!0}),t.default=function(e){var t=[];return 
Object.keys(e).forEach(function(n){return 
t.push(e[n])}),t}},function(e,t,n){"use strict";function a(e){return 
Object.prototype.toString.call(e).slice(8,-1)}function r(e)
{return"Number"===a(e)&&!isNaN(e)&&e>0}function o(e){return 
e.isRequired=function(t,n,a){if(void 0===t[n])return new Error("The 
prop "+n+" is marked as required in \n      "+a+", but its value is 
undefined.");e(t,n,a)},e}Object.defineProperty(t,"__esModule",
{value:!0}),t.falseOrElement=t.falseOrNumber=void 
0,t.typeOf=a,t.isValidDelay=r;var 
i=n(0);t.falseOrNumber=o(function(e,t,n){var 
a=e[t];return!1===a||r(a)?null:new Error(n+" expect "+t+" \n      to 
be a valid Number > 0 or equal to false. "+a+" 
given.")}),t.falseOrElement=o(function(e,t,n){var 
a=e[t];return!1===a||(0,i.isValidElement)(a)?null:new Error(n+" 
expect "+t+" \n      to be a valid react element or equal to false. 
"+a+" given.")})}

Here is my webpack base/prod config: 这是我的webpack base / prod配置:

//BASE CONFIG

var path = require("path")
var webpack = require('webpack')
var BundleTracker = require('webpack-bundle-tracker')

module.exports = {
  context: __dirname,
  target: 'node',

  entry: './assets/js/index',

 output: {
  path: path.resolve('./assets/bundles/'),
  publicPath: '/static/bundles/',
  filename: "[name]-[hash].js"
},

 plugins: [
  new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery',
        'window.jQuery': 'jquery'
    }),
], // add all common plugins here

module: {
    rules: [
       /* {
          enforce: "pre",
          test: /\.js$/,
          loader: "eslint-loader",
          exclude: /node_modules/
        },*/
        {test: /\.jsx?$/,
            exclude: /node_modules/,
            loaders: ['babel-loader'],

        }, { test: /\.(scss|css)$/,
              loaders: ["style-loader", "css-loader", "sass-loader"]
        }, {
            test: /\.(jpg|png|gif)$/,
            loaders: ['url-loader?limit=25000']
        },
           {
            test: /\.(eot|svg|ttf|woff|woff2|otf)$/,
            loader: 'file-loader?name=public/fonts/[name].[ext]'
        },

    ],
},

resolve: {
    //tells webpack where to look for modules
    modules:  [path.resolve(__dirname, "app"), "node_modules"],
    //extensions that should be used to resolve modules
    extensions: ['.js', '.jsx']
}
}

//PROD CONFIG
var webpack = require('webpack')
var BundleTracker = require('webpack-bundle-tracker')
var config = require('./webconfig.base.js')

config.output.path = require('path').resolve('./assets/bundles')
config.plugins = config.plugins.concat([

new BundleTracker({filename: './webpack-stats-prod.json'}),

  // removes a lot of debugging code in React
  new webpack.DefinePlugin({
   'process.env': {
  'NODE_ENV': JSON.stringify('production')
  }}),

  // keeps hashes consistent between compilations
  new webpack.optimize.OccurrenceOrderPlugin(),

  // minifies your code
  new webpack.optimize.UglifyJsPlugin({
  minimize: true,
    compressor: {
     warnings: false
    }
  })
])

module.exports = config

使用target: 'web' (或不使用),而不是target: node

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我正在使用(取消链接($ _ GET ['videofile']))并且它在开发服务器上工作正常,但在prod中将无效 - I'm using (unlink($_GET['videofile'])) and it works fine on dev server but in prod won't work 为什么我在将 Wasm 捆绑在一起后收到错误“响应具有不受支持的 MIME 类型”,但在使用 webpack 开发服务器时却没有? - Why do I get the error "Response has unsupported MIME type" after bundling Wasm together, but not when serving with the webpack dev server? 如何修复 Webpack 和 Babel 的“require is not defined”错误? - How do I fix "require is not defined" error with Webpack and Babel? Webpack与Webpack Dev Server一起使用时不会生成捆绑包 - Webpack not generating bundle when used with Webpack Dev Server 如何在没有webpack开发服务器的情况下仅将webpack用于捆绑? - How can I use webpack just for bundle without webpack dev server? 我可以使用 webpack 开发服务器的相对路径 - 反应 js - Can I use relative path with webpack dev server - react js 出现未捕获的引用错误 - 当我尝试导入 javascript 文件时需要未定义 - Getting an Uncaught reference error - require not defined when I try to import a javascript file 为什么当我使用--arg时,webpack-dev-server会引发错误? - Why is webpack-dev-server throwing an error when I use --arg? 运行webpack-dev-server时如何解决Bootstrap错误? - How to fix Bootstrap error when I run webpack-dev-server? 在Webpack包中运行Webpack Dev Server - Running a Webpack Dev Server inside a webpack bundle
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM