2017-03-04 96 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]', 
     }) 
    ]