求助:Webpack ProvidePlugin无法正确引入自定义模块
Webpack ProvidePlugin 无法引入默认导出模块?这样解决就行!
我懂你这种头疼的感觉——明明用alias能顺顺利利引入默认导出的myHelper,换成ProvidePlugin就卡壳,试了好几种配置都没效果对吧?别着急,这是因为ProvidePlugin处理默认导出的逻辑需要稍微调整下写法。
正确的配置写法
直接用你已经定义好的别名加上'default'就行,配置如下:
new webpack.ProvidePlugin({ myHelper: ['myHelper', 'default'] })
这里的第一个'myHelper'就是你在resolve.alias里配置的别名,后面的'default'告诉Webpack:我要取这个模块的默认导出,不是具名导出。
为啥之前的配置不生效?
- 第一种直接写绝对路径的方式:
myHelper: path.resolve(__dirname, 'app/folder/myHelper.js'),ProvidePlugin会默认去模块里找名为myHelper的具名导出,但你的模块只有默认导出,自然找不到。 - 第二种写
['app/folder/myHelper.js', 'default']的问题大概率出在路径解析上,比如相对路径的基准是否和Webpack的上下文一致,而复用你已经配置好的别名就没这个顾虑,还能保持配置的一致性。
验证方法
配置完成后,你不用再手动import myHelper,直接在代码里调用myHelper.hello(),Webpack会自动帮你把这个默认导出的模块注入到需要的地方。
内容的提问来源于stack exchange,提问作者ada
相关产品推荐
相关产品推荐

