Max*_*kyi 9 javascript angularjs webpack
我已经像这样配置了webpack:
resolve: {
alias: {
angular: path.join(__dirname, './node_modules/angular/angular.js')
}
},
Run Code Online (Sandbox Code Playgroud)
在我的文件中我需要像这样的角度:
var angular = require("angular");
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,返回一个空对象,为什么?
其他答案不太准确 - 核心angular.js文件确实不支持 CommonJS,但是如果您从 NPM 安装它,index.js则会提供一个名为的小包装文件。它实际上只是两行:
require('./angular'); // Runs angular.js, which attaches to the window object
module.exports = angular; // Exports the global variable
Run Code Online (Sandbox Code Playgroud)
这允许您像平常一样在 CommonJS 环境中使用它。因此,如果您像这样更新配置,它应该可以工作:
resolve: {
alias: {
angular: path.join(__dirname, './node_modules/angular/index.js')
}
},
Run Code Online (Sandbox Code Playgroud)
(也就是说,即使您没有 alias ,这也应该是 Webpack 的默认行为angular,因为index.js它在其中标记为 Angular 的主文件package.json- 您可能根本不使用别名就可以逃脱!)
其他答案没有提供可行的解决方案。确实,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',
}),
],
Run Code Online (Sandbox Code Playgroud)
这应该正确初始化角度对象,而不是将其设置为空对象(没有名为 module 的属性)的默认操作。
| 归档时间: |
|
| 查看次数: |
1186 次 |
| 最近记录: |