Uncaught ReferenceError: require is not defined - Webpack2
Uncaught ReferenceError: require is not defined - Webpack2
我正在更新一个应用程序以使用 webpack 1 中的 webpack 2,并且常规构建工作正常。当使用 devServer 并且只需要生成的块之一时,问题似乎出现了(它是一个电子应用程序,所以我有主块和渲染器块 - 两者都包含在常规构建中,而开发服务器只包含渲染器块)
在 webpack 1 上一切正常,但出于某种原因运行时没有包含在我的块中?我试过重新排序但无济于事。
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
const path = require('path');
module.exports = {
context: __dirname,
entry: {
main: './main.js',
renderer: './app/index.jsx'
},
output: {
path: path.resolve(__dirname, './dist'),
filename: "[name].js"
},
node: {
__dirname: false,
__filename: false
},
devtool: 'cheap-eval-source-map',
target: 'electron',
module: {
loaders: [
{
test: /(\.js$|\.jsx$)/,
exclude: /(node_modules|dist)/,
loader: 'babel'
},
{ test: /\.scss$/, loader: "style!css?modules!sass" },
{ test: /\.png$/, loader: "url?limit=100000" },
{ test: /\.jpg$/, loader: "file" }
]
},
resolve: {
extensions: ['.js', '.jsx', '.scss'],
modules: [path.resolve('./app'), 'node_modules']
},
plugins: [
new HtmlWebpackPlugin({
template: './app/index.html',
chunks: ['renderer'],
inject: 'body',
hash: 'true'
}),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': '"dev"'
}
})
],
devServer: {
contentBase: __dirname
},
externals: {
'cheerio': 'window',
'react/addons': true,
'react/lib/ExecutionEnvironment': true,
'react/lib/ReactContext': true
}
};
其中一个块似乎没有正确包含:
/***/ },
/* 26 */
/***/ function(module, exports) {
module.exports = require("url");
这是为什么?
所以问题似乎出在我将目标设置为 electron
但构建网络时。这似乎在 webpack 1 中有效,但在更新到 webpack 2 后,它不再包含两个包中的运行时。
我采取的解决方案是有两个配置 - 一个用于电子(我的主要构建),一个用于网络(在 webpack 配置中指定目标)
我正在更新一个应用程序以使用 webpack 1 中的 webpack 2,并且常规构建工作正常。当使用 devServer 并且只需要生成的块之一时,问题似乎出现了(它是一个电子应用程序,所以我有主块和渲染器块 - 两者都包含在常规构建中,而开发服务器只包含渲染器块)
在 webpack 1 上一切正常,但出于某种原因运行时没有包含在我的块中?我试过重新排序但无济于事。
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
const path = require('path');
module.exports = {
context: __dirname,
entry: {
main: './main.js',
renderer: './app/index.jsx'
},
output: {
path: path.resolve(__dirname, './dist'),
filename: "[name].js"
},
node: {
__dirname: false,
__filename: false
},
devtool: 'cheap-eval-source-map',
target: 'electron',
module: {
loaders: [
{
test: /(\.js$|\.jsx$)/,
exclude: /(node_modules|dist)/,
loader: 'babel'
},
{ test: /\.scss$/, loader: "style!css?modules!sass" },
{ test: /\.png$/, loader: "url?limit=100000" },
{ test: /\.jpg$/, loader: "file" }
]
},
resolve: {
extensions: ['.js', '.jsx', '.scss'],
modules: [path.resolve('./app'), 'node_modules']
},
plugins: [
new HtmlWebpackPlugin({
template: './app/index.html',
chunks: ['renderer'],
inject: 'body',
hash: 'true'
}),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': '"dev"'
}
})
],
devServer: {
contentBase: __dirname
},
externals: {
'cheerio': 'window',
'react/addons': true,
'react/lib/ExecutionEnvironment': true,
'react/lib/ReactContext': true
}
};
其中一个块似乎没有正确包含:
/***/ },
/* 26 */
/***/ function(module, exports) {
module.exports = require("url");
这是为什么?
所以问题似乎出在我将目标设置为 electron
但构建网络时。这似乎在 webpack 1 中有效,但在更新到 webpack 2 后,它不再包含两个包中的运行时。
我采取的解决方案是有两个配置 - 一个用于电子(我的主要构建),一个用于网络(在 webpack 配置中指定目标)