我正在使用webpack来构建我的应用,并且我使用的库(eventemitter4)本身依赖于另一个库(underscore)。
但是,我已经在我的应用程序中使用了underscore(lodash的替代品,更确切地说是es6版本)。 我希望eventemitter4使用这个以后的库,并避免在我的构建中包含两个。
我使用npm install
安装我的依赖项。因此,underscore被捆绑为eventemitter4目录中的子目录。
它试图设置别名,但我无法使它工作:
alias: {
"underscore": "lodash-es",
"lodash": "lodash-es",
"~/underscore": "lodash-es"
}
加注
ERROR in ./~/eventemitter4/index.js
Module not found: Error: Cannot resolve module 'lodash-es' in /Users/me/myapp/node_modules/eventemitter4
@ ./~/eventemitter4/index.js 6:2-23
如果我不添加"~/underscore": "lodash-es"
,则会包含子underscore而不是lodash。
有什么想法吗?
非常感谢你的帮助。
答案 0 :(得分:0)
我实际上找到了原因。别名正在运作。导致错误的原因是lodash-es
在main
中没有提供package.json
属性(它只提供了一个无法被webpack识别的esnext:main
)。
我使用以下方法解决了这个问题:
alias: {
"underscore": "lodash-es",
"lodash": "lodash-es/lodash",
"~/underscore": "lodash-es"
}