前言
这两天在开发基于 react
+ antd
+ webpack
的前端项目打包时,遇到一个错误:
Module not found: Error: Can’t resolve ‘./locale’ in ···
这是 moment 库的一个 bug,参见 #4216。
问题原因
antd 框架中内置了 moment 库,可以用来进行本地化等配置。
我在开发时项目 antd 框架版本 ^4.1.0,默认使用了最新的 moment@2.25.0,这个版本是存在 bug 的。
解决方案:不使用 antd 自带的 moment,通过配置 package.json
的 resolutions
使用指定自己的 moment 版本。
解决办法
{
"dependencies": {
"moment": "2.24.0",
"moment-timezone": "^0.5.28"
},
"resolutions": {
"moment": "2.24.0"
}
}
这里我再贴一张 GitHub 大神的原文图片,大家对照着看就行:
关于 package.json 中 resolutions 的说明
允许您覆盖特定嵌套依赖项的版本。有关完整规范,请参见选择性版本解析RFC。