Javascript 使用力矩JS创建React应用程序:找不到模块"/地点“;

Javascript 使用力矩JS创建React应用程序:找不到模块"/地点“;,javascript,node.js,locale,momentjs,create-react-app,Javascript,Node.js,Locale,Momentjs,Create React App,刚刚在我的web应用程序上运行了一个npm更新,现在JS出现故障,并显示以下消息: Error: Cannot find module "./locale" \node_modules\moment\src\lib\moment\prototype.js:1 > 1 | import { Moment } from './constructor'; 我不确定更新之前我使用的是什么版本的MomentJS,但我的应用程序已经运行了几个月 我创建了另一个react应用程序,运行了一个npm安装

刚刚在我的web应用程序上运行了一个
npm更新
,现在JS出现故障,并显示以下消息:

Error: Cannot find module "./locale"
\node_modules\moment\src\lib\moment\prototype.js:1
> 1 | import { Moment } from './constructor';
我不确定更新之前我使用的是什么版本的MomentJS,但我的应用程序已经运行了几个月

我创建了另一个react应用程序,运行了一个
npm安装时刻--save
,并修改了源代码以显示时间,最后出现了上述相同的错误


我不确定是否有一种防故障的方法可以使用CreateReact应用程序集成MomentJS,目前还没有弹出来管理我自己的网页设置,但我真的不想这样做。还有谁看到这些问题或取得了成功?如果是这样的话,一篇简短的评论将有助于解决问题。

看来,目前JS 2.19版已经确定这是一个问题。如果已升级到2.19,请运行
npm安装moment@2.18.1
恢复到以前的版本,直到修复


请看帖子:

上面的答案,尽管我毫无疑问对某些人有效,但对我不起作用。我找到的解决方案相当快速和简单,但比简单的降级要复杂一些

此问题源于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语句应该如下所示:

import moment from 'moment'
您现在应该能够完全正常地使用力矩。例如:

var tomorrow = moment().add(1, "day")

使用Create React应用程序构建应用程序,并使用Moment2.24.0,以下各项似乎运行良好:

import moment from 'moment';
import 'moment/min/locales';
而不是直接导入带有区域设置的
时刻。或者,也可以仅导入所需的区域设置:

import moment from 'moment';
import 'moment/locale/fr';
import 'moment/locale/ru';

如果您有一个新的安装,或升级到2.25版,并且现在收到此警告,请尝试强制所有软件包使用2.24

更新:已报告已修复此问题!试着先更新一下

如果您依赖某个尚未升级的库,请告诉他们升级。同时,如果需要2.25,还可以强制子依赖项使用此版本

如果您正在使用
warn
将这些行添加到package.json中

    "resolutions": {
        "**/moment": ">=2.25.3"
    },

这将添加到packages.json的顶层,即使用与“依赖项”相同的缩进。

使用此解决方案时要小心,因为如果您使用的是create react app,您将避免它对webpack进行任何配置更改,除了它附带的内容。此外,除非您将本地
节点模块
发送到生产服务器,否则此解决方案可能不适合生产环境。您将在哪里导入此解决方案?我无法在与其他提供者一起导入的
“react scripts”:“3.1.2”
“moment”:“2.24.0”
@olefrank上使用此功能。我有完全相同的版本,它似乎仍然在工作。也许顺序很重要,我在回答时忽略了它。您可以尝试导入
import'moment/locale/et';从“力矩”中导入力矩;从“反应力矩”导入力矩;力矩。全局力矩=力矩;Moment.globalLocale='et'也可以尝试搜索编译后的文件。可能语言文件包含正确,但实际问题存在于其他地方。有关更多类似的答案,请参阅相关问题避免版本2.25到2.25.2。改用2.25.3版解决此问题