我這樣的配置的WebPack:爲什麼需要(「角」)返回一個空對象
resolve: {
alias: {
angular: path.join(__dirname, './node_modules/angular/angular.js')
}
},
,在我的文件我需要的角度是這樣的:
var angular = require("angular");
但由於某些原因一個空的對象被返回,爲什麼?
我這樣的配置的WebPack:爲什麼需要(「角」)返回一個空對象
resolve: {
alias: {
angular: path.join(__dirname, './node_modules/angular/angular.js')
}
},
,在我的文件我需要的角度是這樣的:
var angular = require("angular");
但由於某些原因一個空的對象被返回,爲什麼?
其他答案沒有提供工作解決方案。確實,Angular 1與webpack開箱即用(請參閱https://github.com/webpack/webpack/issues/2049)不能很好地配合使用,但它可以使用墊片加載。試試這個的WebPack裝載機配置:
module: {
loaders: [
/*
* Necessary to be able to use angular 1 with webpack as explained in https://github.com/webpack/webpack/issues/2049
*/
{
test: require.resolve('angular'),
loader: 'exports?window.angular'
},
]
},
plugins: [
new webpack.ProvidePlugin({
'angular': 'angular',
}),
],
這應該初始化角度對象,而不是正確的它設置爲空對象的默認操作(不具有屬性命名模塊)。
Angular 1不支持CommonJS模塊,所以它'導出'一個空對象。
相反,只需要它(不分配的結果):
require('angular')
概念性的答案 -
角1.x的不支持CommonJS
模塊的關注對象的方法爲什麼出口單產empty object
:
var angular = require("angular");
因此,更好地省略var angular
部分,只是利用require("angular");
其他的答案是不太準確 - 這是真的,核心angular.js
文件不支持CommonJS的,但如果你從NPM安裝吧,提供了一個叫做index.js
的小封裝文件。這實際上只是兩行:
require('./angular'); // Runs angular.js, which attaches to the window object
module.exports = angular; // Exports the global variable
這使您可以在CommonJS環境中使用它,例如正常。所以,如果你更新你的配置,像這樣,它應該工作:
resolve: {
alias: {
angular: path.join(__dirname, './node_modules/angular/index.js')
}
},
(這就是說,這應該是的WebPack的默認行爲,即使你不別名angular
,爲index.js
在其package.json
標記爲角的主文件 - 你可能可以逃脫,只是根本沒有別名!)
太好了,謝謝你的建議,我一定會試試 –
這對我有很大的幫助!謝謝! –
無論出於何種原因,該包裝並沒有做到這一點。 require('angular')之後的「angular」變量是空對象,但window.angular包含適當的角對象。因此,這個加載器配置是必需的:{test:require.resolve('angular'),loader:'exports?'窗口。角度'}, – Motin
Angular 1不支持CommonJS模塊,所以它'導出'一個空對象。 相反,只需要它(沒有分配結果): require('angular') – Rahul
是的,它的工作現在,謝謝,你可以發佈它作爲答案? –
請檢查我的回答 – Rahul