升级expose-loader至v1.0后,Aurelia项目Bluebird暴露配置如何调整?
适配expose-loader v1.0+的Webpack配置修改方案
你碰到的这个错误是因为expose-loader从v1.0版本开始完全重构了配置API,旧版通过查询参数(?Promise)传递暴露变量的方式已经被废弃,现在必须使用exposes选项来定义全局变量。
直接把你的Webpack配置改成下面这样就能解决问题:
module.exports = { module: { rules: [ { test: /[\/\\]node_modules[\/\\]bluebird[\/\\].+\.js$/, loader: 'expose-loader', options: { exposes: 'Promise' } }, ], }, };
补充说明:
如果之后需要更灵活的配置(比如同时暴露多个变量,或者指定模块内部的引用别名),还可以使用对象格式的配置:
options: { exposes: { globalName: 'Promise', // 全局环境中暴露的变量名 moduleLocalName: 'BluebirdPromise' // 可选,模块内部的引用名称 } }
这样修改后,Webpack就能正确识别配置,把Bluebird的Promise实例暴露到浏览器全局环境中了。
内容的提问来源于stack exchange,提问作者Lurch
相关产品推荐
相关产品推荐

