首页 > 解决方案 > 未捕获的类型错误:moment.defineLocale 不是使用语言环境进行更改的函数

问题描述

我使用moment.js来创建我自己typescriptwebpackjava-script 客户端组件,一切都很好。
所用组件的版本:

 "dependencies": {
    "circular-dependency-plugin": "^5.2.2",
    "ignore-loader": "^0.1.2",
    "moment": "^2.29.1",
    "moment-locales-webpack-plugin": "^1.2.0",
    "ts-loader": "^9.2.3",
    "typescript": "^4.3.5",
    "webpack": "^5.45.1",
    "webpack-cli": "^4.7.2",
    "webpack-dev-server": "^4.0.0-beta.3"
  }

为了像这个例子一样添加波斯文化,我必须编写一些这样的代码:

import * as moment from "moment";
import "moment/locale/fa";

console.log(moment.locale()); // en
moment.locale("fa");
console.log(moment.locale()); // muste be fa

现在我收到此错误:

浏览器中的 webpack 错误
我认为 webpack 对 .js 文件执行的额外过程并模拟require()方法案例这个问题。我搜索了一些类似我的问题,但答案不可用。什么是问题以及如何配置 webpack 来解决这个问题。

更新:

在花了很多时间编写代码之后。我发现问题可以通过以下方式解决:例如,对于相关 .js 设置文件中的波斯文化,将../moment路径替换为moment

在此处输入图像描述

该解决方案不是上帝,因此需要帮助以获得不需要更改时刻源代码的最佳方法。我认为像编辑路径路由tsc或 webpack 配置这样的东西可以解决这个问题。有什么建议吗?谢谢

标签: javascripttypescriptwebpackmomentjs

解决方案


添加了moment js支持的版本。moment.locale() @ 2.8.0

从 v2.8.1 开始,moment.locale('en')设置本地化但不返回moment.


推荐阅读