簡體   English   中英

使用 Moment JS 創建 React-App:找不到模塊“./locale”

[英]Create-React-App with Moment JS: Cannot find module “./locale”

剛剛在我的 Web 應用程序上運行了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 ,但我的應用程序已經運行了幾個月。

我創建了另一個 react 應用程序並運行了npm install moment --save並修改了源代碼以顯示時間並最終出現上述相同的錯誤。

不確定是否有一種防故障方法可以使用Create-React-App集成Moment JS,目前還沒有彈出來自己管理 webpack 設置,但我真的不想這樣做。 還有其他人看到這些問題或取得成功嗎? 如果是這樣,寫一篇簡短的文章將有助於提供幫助。

看來這已經被確定為Moment JS 2.19 版的問題。 如果您已升級到 2.19,請運行npm install moment@2.18.1以恢復到以前的版本,直到它被修復!

見線程: https : //github.com/moment/moment/issues/4216

使用 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';

上面的答案,雖然我毫不懷疑對某些人有用,但對我不起作用。 我找到的解決方案相當快速和簡單,但比簡單的降級要復雜一些。

這個問題源於 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'

您現在應該可以完全正常使用 moment。 例如:

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

如果您有全新安裝或升級到 2.25 並且現在收到此警告,請嘗試強制您的所有軟件包使用 2.24。

更新:已報告新版本 2.25.3解決了這個問題! 嘗試先更新。

如果您依賴某個尚未升級的庫,請告訴他們升級。 同時,如果您需要 2.25,您也可以強制您的子依賴項使用此版本。

如果您使用yarn將這些行添加到 package.json

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

這將被添加到頂層的packages.json 中,即與“依賴項”具有相同的縮進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM