WebPack-Dev-Server错误:未定义require

时间:2016-09-12 23:45:43

标签: node.js webpack webpack-dev-server

Webpack本身工作正常,但webpack-dev-server却没有。基本上,webpack为我创建了2个构建文件,一个后端捆绑和一个前端捆绑。所以,我为每个人都有一个webpack-config.js。我想用webpack-dev-server开发我的前端代码,你可以从我的webpack-config文件中看到我的front-end-bundle.js。当我运行web-pack-dev服务器时,它能够找到并构建我的front-end.js和index.html,但是在控制台中没有任何渲染,它给了我一个“未捕获的ReferenceError:require未定义“

// var nodeExternals = require('webpack-node-externals');
var webpack = require('webpack');

module.exports = {
entry: './browser/entry.js',
output: {
    path: './builds',
    filename: 'frontend.js'
},
plugins: [
    new webpack.DefinePlugin({
        'process.env.NODE_ENV': '"development"'
    }),
    new webpack.DefinePlugin({
        'process.env': {
            'NODE_ENV': '"development"'
        }
    })
],
module: {
    loaders: [
        {
            test: [/\.es6$/, /\.js$/, /\.jsx$/],
            exclude: 'node_modules',
            loader: 'babel-loader',
            query: {
                presets: ['react', 'es2015', 'stage-1']
            }
        }, 
        {
            test: /\.json$/,
            loader: 'json-loader'
        }, 
        {
            test: /\.html$/,
            loader: 'html-loader'
        }, 
    ]
},
resolve: {
    extensions: ['', '.js', '.es6', '.json'], 
    root: '/Users/johnhenry/Desktop/GAMR/gamr/browser'
}, 
devServer: {
    contentBase: 'builds/dev-build'
},
target: 'node',
// externals: [nodeExternals()]
}

错误是由我在前端构建中触发的(它只在dev服务器构建中,而不是在非dev服务器webpack构建中):

function(module, exports) {

module.exports = require("url");

如果有人对此有所了解,我们将不胜感激

4 个答案:

答案 0 :(得分:5)

尝试添加:

target: 'web'

到你的模块。

答案 1 :(得分:1)

我有同样的错误,如果有人还在努力解决这个问题,这个解决方案也帮助了我:

  

......有两种方法可以解决这个问题:

     

<强> 1。 (推荐)不要在Webpack浏览器配置中激活webpack-node-externals,但让Webpack确实捆绑这些模块   在定位网络时(这很可能是您想要做的)

     
      
  1. 在浏览器中以其他方式加载外部模块,并将相应的importType标志添加到webpack-node-externals配置(对于脚本为var或对于AMD为amd)
  2.   

更多详细信息:https://github.com/liady/webpack-node-externals/issues/17#issuecomment-284222729

答案 2 :(得分:0)

我的webpack.config.js中有以下规则

 rules: [
        {
            test: /\.js$/,
            use:['script-loader']
        }
    ]

从webpack.config.js中删除上述规则,删除了错误。

希望这有帮助。

答案 3 :(得分:0)

当来自节点应用的webpack.config.js作为React应用的基础时,我遇到了这个问题。

我有以下内容:

target: 'web'

但仍然遇到相同的问题。

删除对 webpack-node-externals 的引用即可解决此问题,当您考虑节点外部的实际作用时,这确实很有意义。