解决 webpack 打包时 moment.js 报错问题


前言


这两天在开发基于 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.jsonresolutions 使用指定自己的 moment 版本。

解决办法


{
  "dependencies": {
    "moment": "2.24.0",
    "moment-timezone": "^0.5.28"
  },
  "resolutions": {
    "moment": "2.24.0"
  }
}

这里我再贴一张 GitHub 大神的原文图片,大家对照着看就行:

关于 package.json 中 resolutions 的说明


允许您覆盖特定嵌套依赖项的版本。有关完整规范,请参见选择性版本解析RFC


文章作者: 筱杉少年
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 筱杉少年 !
评论
 上一篇
Spring Boot 开发中跨域场景及其解决方案介绍 Spring Boot 开发中跨域场景及其解决方案介绍
很多人对跨域有一种误解,认为这是前端的事,和后端没关系,其实不是这样的。本文就和大家聊一下 Spring Boot 开发中三种跨域场景及其解决方案。
2020-05-12
本篇 
解决 webpack 打包时 moment.js 报错问题 解决 webpack 打包时 moment.js 报错问题
antd 框架中内置了 moment 库,可以用来进行本地化等配置。我最近在使用 antd 通过 webpack 打包时却遇到了 moment.js 的一个错误。
2020-05-06
  目录