【问题标题】:Uncaught TypeError: moment.defineLocale is not a function in use locale for change calture未捕获的类型错误:moment.define 语言环境不是使用语言环境更改文化的函数
【发布时间】:2021-07-27 09:38:33
【问题描述】:

我在typescript 中使用moment.js 和webpack 创建自己的java-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"
  }

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

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 对 .js 文件执行的额外过程并模拟 require() 方法可以解决这个问题。我搜索了一些类似我的问题,但答案不可用。什么是问题以及如何配置 webpack 来解决这个问题。

更新:

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

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

【问题讨论】:

标签: javascript typescript webpack momentjs


【解决方案1】:

moment js版本支持moment.locale()增加 @ 2.8.0。

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

【讨论】:

  • 感谢您的回答。我编辑问题
猜你喜欢
  • 2013-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多