我这样的配置的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