我正在尝试使用webpack的dllPlugin来使我的块变小,并且我在客户端使它运行良好但在服务器端渲染中出错了.
我以此为例,使其更简单,这是我的演示代码:
webpack.config.dll.js
// webpack.config.dll.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: {
a: ['./a']
},
output: {
path: path.join(__dirname, 'dist'),
filename: '[name].js',
library: '[name]'
},
plugins: [
new webpack.DllPlugin({
path: path.join(__dirname, 'dist', 'manifest.json'),
name: '[name]'
})
]
}
Run Code Online (Sandbox Code Playgroud)
webpack.config.js
// webpack.config.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './example',
output: {
path: path.join(__dirname, 'dist'),
filename: 'output.js'
},
plugins: [
new webpack.DllReferencePlugin({
context: __dirname,
manifest: require('./dist/manifest.json')
})
] …Run Code Online (Sandbox Code Playgroud) 我的一个项目中的DllReferencePlugin有问题(我使用的是Webpack 1.13.2)。特别是,我有 3 对清单和由DllPlugin生成的包文件,在主包的插件部分中,我有 3 个DllReferencePlugin部分:
entry: {
body: [
'./src/main.js',
],
},
...
plugins: [
...
new webpack.DllReferencePlugin({
context: process.cwd(),
manifest: path.join(dllPath, 'commons-manifest.json'),
}),
new webpack.DllReferencePlugin({
context: process.cwd(),
manifest: path.join(dllPath, 'vendor-manifest.json'),
}),
new webpack.DllReferencePlugin({
context: process.cwd(),
manifest: path.join(dllPath, 'react-manifest.json'),
}),
]
...
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,出现以下错误:
/node_modules/webpack/lib/DelegatedModuleFactoryPlugin.js:43 if(request && request in this.options.content) { ^
类型错误:无法使用“in”运算符在未定义中搜索“./src/main.js”
相同的配置适用于我的另一个项目,所以我认为这个错误与路径解析有关。我已经尝试了上下文和清单路径的相对路径,但它也不起作用。