Webpack供应商dll参考错误

Ale*_*lex 2 javascript webpack

建立webpack供应商dll并获取

Uncaught ReferenceError: vendors_9a2b8ee29a9e8dcdc486b49a360b9763 is not defined
Run Code Online (Sandbox Code Playgroud)

编译后的代码如下所示

module.exports = vendors_9a2b8ee29a9e8dcdc486b49a360b9763;

//////////////////
// WEBPACK FOOTER
// external "vendors_9a2b8ee29a9e8dcdc486b49a360b9763"
// module id = 2
// module chunks = 0
Run Code Online (Sandbox Code Playgroud)

它缺少像这样的声明和定位

var angular = __webpack_require__(2)

module.exports = (__webpack_require__(3))(1)
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会这样,而且我已经尝试了所有方法。这是我的webpack配置的插件:

plugins: [
    new webpack.DllReferencePlugin({
        context: '.',
        manifest: require('./src/tmp/vendors-manifest.json')
    }),
],
Run Code Online (Sandbox Code Playgroud)

这是我的dll配置:

var webpack = require('webpack');
var packageJSON = require('./package.json');
var path = require('path');

module.exports = {
    entry: {
        vendors: Object.keys(packageJSON.devDependencies),
    },
    output: {
        path: path.join(__dirname, 'src/tmp'),
        filename: 'vendors.bundle.js',
        library: 'vendors_[hash]'
    },
    plugins: [
        new webpack.DllPlugin({
            path: 'src/tmp/[name]-manifest.json',
            name: 'vendors_[hash]'
        }),
    ]
};
Run Code Online (Sandbox Code Playgroud)

index.html导入:

<script type="text/javascript" src="/src/tmp/vendors.bundle.js"></script>
<script type="text/javascript" src="/dist/js/app.js"></script>
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激!提前谢谢!

小智 7

我有这个问题。它通过更改上下文来解决。

plugins: [
new webpack.DllReferencePlugin({
    context: path.join(__dirname, 'src/tmp'),
    manifest: require('./src/tmp/vendors-manifest.json')
})]
Run Code Online (Sandbox Code Playgroud)

  • 相同的。我花了几个小时调试这个。感谢您的提醒 (3认同)
  • 谢谢,我遇到了同样的问题,这对我有用。 (2认同)

小智 -3

修改你的dll配置文件,并将你的代码设置为

new webpack.DllPlugin({
    path: 'path.join(__dirname, 'src/tmp/manifest.json')',
    name: 'vendors_[hash]'
}),
Run Code Online (Sandbox Code Playgroud)

并在您的配置文件中将 DllReferencePlugin 修改为此

plugins: [
    new webpack.DllReferencePlugin({
        context: __dirname,
        manifest: require(path.join(__dirname, 'src/tmp/manifest.json')),
        name: 'vendors_9a2b8ee29a9e8dcdc486b49a360b9763'
    }),
],
Run Code Online (Sandbox Code Playgroud)