2017-03-04 93 views
1

大厦的WebPack供应商DLL和获取的WebPack供应商dll引用错误

Uncaught ReferenceError: vendors_9a2b8ee29a9e8dcdc486b49a360b9763 is not defined 

编译后的代码现身为

module.exports = vendors_9a2b8ee29a9e8dcdc486b49a360b9763; 

////////////////// 
// WEBPACK FOOTER 
// external "vendors_9a2b8ee29a9e8dcdc486b49a360b9763" 
// module id = 2 
// module chunks = 0 

它缺少的东西申报和定位像

var angular = __webpack_require__(2) 

module.exports = (__webpack_require__(3))(1) 

我不知道这是为什么,我已经试过绝对的一切。这里是插件我的WebPack配置:

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

,这里是我的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]' 
     }), 
    ] 
}; 

index.html的进口:

<script type="text/javascript" src="/src/tmp/vendors.bundle.js"></script> 
<script type="text/javascript" src="/dist/js/app.js"></script> 

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

+0

你,包括你的应用程序包之前,'vendors.bundle.js'? –

+0

根据你的配置,供应商软件包位于'/ src/tmp/vendors.bundle.js'中,而不是'/ tmp/vendors.bundle.js'。 –

+0

对不起,当我在这里输入它时出现了输入错误,它在我的应用程序的src下是命名空间,我仍然遇到问题。 – Alex

回答

0

修改您的dll的配置文件,您的代码设置为

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

和你的配置文件,并修改你DllReferencePlugin这个

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

我碰到了同样的问题。我不得不将相同名称的“库”选项添加到输出部分。

// Location of webpack output 
    output: { 
     path: path.join(__dirname, 'dll'), 
     filename: '[name].bundle.js', 
     library: '[name]' 
    }, 

    plugins: [    
     new webpack.DllPlugin({ 
      path: require(path.join(__dirname, 'dll/[name]-manifest.json')), 
      name: '[name]', 
     }) 
    ]