刚刚在我的网络应用程序上运行npm update
,现在 Moment JS 似乎失败,并显示以下消息:
Error: Cannot find module "./locale"
\node_modules\moment\src\lib\moment\prototype.js:1
> 1 | import { Moment } from './constructor';
我不确定在更新之前我的 Moment JS 的版本,但我的应用程序已经工作了几个月。
我创建了另一个反应应用并运行了npm install moment --save
并修改了源以显示时间并最终得到了上述相同的错误。
不确定是否存在使用创建-React-App 集成 Moment JS 的防故障方式,目前缺少弹出来自行管理webpack设置,但是我真的不想这样做。其他人看到这些问题或取得成功?如果是这样的话,那么简短的写作就会有助于帮助。
答案 0 :(得分:5)
出现这已经被确定为 Moment JS 版本2.19的问题。如果您已升级到2.19运行npm install moment@2.18.1
以恢复到以前的版本,直到它被修复!
答案 1 :(得分:2)
尽管我毫无疑问对某些人有用,但上面的答案对我不起作用。我发现的解决方案相当快捷,简便,但是比简单的降级要复杂一些。
此问题是由webpack引起的,可以使用webpack修复。因此,我们将不得不在webpack.config.js文件中添加几行代码。如果还没有,可以将其添加到webpack根目录中:
YOURAPPNAME/node-modules/webpack/
因此,既然您位于webpack.config.js文件中,则需要添加几行代码。只需将其复制并粘贴到新文件中,或使其适应webpack.config.js中已有的代码即可。
module.exports = {
resolve: {
alias: {
moment$: 'moment/moment.js'
}
}
};
您的index.js(或以其他方式命名)文件中的瞬间导入语句应如下所示:
import moment from 'moment'
您现在应该可以完全正常使用矩了。例如:
var tomorrow = moment().add(1, "day")
答案 2 :(得分:2)
如果您是全新安装或升级到2.25,并立即收到此警告,请尝试强制所有软件包使用2.24。
更新:据报告New release 2.25.3可以解决此问题!尝试先进行更新。
如果您依赖尚未升级的某些库,请告诉他们进行升级。同时,如果需要2.25,则还可以强制子依赖项使用此版本。
如果您使用的是yarn
,请将这些行添加到package.json中。
"resolutions": {
"**/moment": ">=2.25.3"
},
这将被添加到package.json的顶层,即与“ dependencies”相同的缩进。
答案 3 :(得分:1)
使用Create React App并使用Moment 2.24.0构建的应用程序,以下似乎工作正常:
import moment from 'moment';
import 'moment/min/locales';
代替直接导入moment-with-locales
。另外,也可以只导入所需的语言环境:
import moment from 'moment';
import 'moment/locale/fr';
import 'moment/locale/ru';