Moment: TS2307:モジュール「モーメント」が見つかりません。

作成日 2020年05月01日  ·  47コメント  ·  ソース: moment/moment

Angular8プロジェクトへのモーメントのインポートに問題があります。

Angularバージョン= 8.3.26
タイプスクリプトバージョン= 3.6.2
モーメントバージョン= 2.25.0

エラーTS2307が発生し
'モーメント'からモーメントをインポートします。

tsConfig「allowSyntheticDefaultImports」:trueを追加しました

誰もがこれを助けることができます

最も参考になるコメント

バージョン2.24を試してください。新しいバージョンではテストが失敗し始めましたが、以前のバージョンでは問題ありませんでした。

全てのコメント47件

バージョン2.24を試してください。新しいバージョンではテストが失敗し始めましたが、以前のバージョンでは問題ありませんでした。

バージョン2.24を試してください。新しいバージョンではテストが失敗し始めましたが、以前のバージョンでは問題ありませんでした。

私が試してみました。 しかし、同じエラーが発生しました。

package.jsonの今のところの行はどのように見えますか?

2.24.0での動作は、2.25.0での展開エラーである可能性があります
修正を加えた新しいバージョンをデプロイしてください。

ヤーンを使用している場合、解像度ブロックをpackage.jsonに追加して、サブ依存関係のバージョンをオーバーライドします。

  "resolutions": {
    "moment": "2.24.0"
  }

Typescriptモジュールの解像度が瞬間を見つけることができないようです。 相対パスの使用は./node_modules/moment/momentで機能します。 @codebrentありがとうございます。2.24.0バージョンで動作しています。

2.25では、これがpackage.jsonに追加されました。 しかし、typedefファイルに対応する場所が存在しないことを理解している場合。 おそらくこれはタイピングを壊しましたか?

"typesVersions": {
    ">=3.1": {
      "*": [
        "ts3.1-typings/*"
      ]
    }
  },

2.24.0での動作は、2.25.0での展開エラーである可能性があります
修正を加えた新しいバージョンをデプロイしてください。

いいえ、それは私のために働いていません

package.jsonの今のところの行はどのように見えますか?

"モーメント": "^ 2.25.0"、

Capture
すべての瞬間のインポートがエラーを返す

package.jsonの今のところの行はどのように見えますか?

111

「moment」:「2.24.0」に変更してみてください。^が含まれていないことを確認してください。 node_modelsを削除し、npminstallを再実行します。 また、package-lock.jsonがある場合は、それを削除する必要があるかもしれません。 それ以外の場合、npmは2.25をインストールし続けます

同じ問題が発生しています。現在のDependabot互換性スコアによると、私だけではありません。

2.24.0にダウングレードすることは回避策かもしれませんが、少なくとも一部のユーザーが2.25.0を使用することを効果的に防ぎます。

「moment」:「2.24.0」に変更してみてください。^が含まれていないことを確認してください。 node_modelsを削除し、npminstallを再実行します。 また、package-lock.jsonがある場合は、それを削除する必要があるかもしれません。 それ以外の場合、npmは2.25をインストールし続けます

これを行うためのより安全で標準的な方法は、単にnpm install [email protected]です。 何かを削除したり、手動で変更したりする必要はありません。

2.24にダウングレードすると問題が解決することを確認できます。

「moment」:「2.24.0」に変更してみてください。^が含まれていないことを確認してください。 node_modelsを削除し、npminstallを再実行します。 また、package-lock.jsonがある場合は、それを削除する必要があるかもしれません。 それ以外の場合、npmは2.25をインストールし続けます

これを行うためのより安全で標準的な方法は、単にnpm install [email protected]です。 何かを削除したり、手動で変更したりする必要はありません。

2.24にダウングレードすると問題が解決することを確認できます。

ローカルでは、2.24.0にダウングレードした後の実行です。 しかし、これをAzureにデプロイすると、同じエラーが発生します。
azure error

私の質問は、それがローカルと紺碧の両方を実行している同じpackage.jsonであるかどうか、インポート時にエラーが発生する理由です。
サーバーにもエラーログを添付しました

2.25.0でこの問題が発生することは確認できますが、2.24.0では確認できません。

また、2.25.0でこの問題が発生することも確認しました。 モーメント2.24.0は正常に機能します。

Dockerイメージのビルド中にこの問題が発生しました。

私にとっては2.24.0では動作しません

ダウングレードにより、ここでも問題が修正されました。 たぶん、TypeScriptバージョンがバグを抱えているかどうかに影響を与える可能性がありますか?

私はmoment-timezoneを使用します
package.jsonでモーメントバージョンを2.24.0に修正しても機能しません

@zhuyuedlut @leafqi

2.24.0では動作しません

おそらく2.24.0にダウングレードしていません。 package-lockファイルとnode_modulesフォルダーを削除してから、次のコマンドを実行します。

npm install --save --save-exact [email protected]
npmインストール

typescriptプロジェクトでも同じ問題が発生しており、package.jsonに依存関係を固定しなかったため、ビルドが突然失敗します。

error TS2307: Cannot find module 'moment'.
error Command failed with exit code 2.

バージョンを"2.24.0"固定すると、問題が修正されます。

package.jsonの解像度フィールドで試すことができます

追加

「解像度」:{
「瞬間」:「2.24.0」
}

また、2.25.0では、typescript3.8.3とts-node8.9.1で実行しても同じ問題が発生することを確認します。 2.24.0にダウングレードすると、問題が解決しました。

@zhuyuedlut @leafqi

2.24.0では動作しません

おそらく2.24.0にダウングレードしていません。 package-lockファイルとnode_modulesフォルダーを削除してから、次のコマンドを実行します。

npm install --save --save-exact [email protected]
npmインストール

THX。 私の問題は解決しました。 2.24.0での動作
正しい使用法: "moment": "2.24.0"
間違った使用法: "moment": "^2.24.0"

「瞬間」:「2.24.0」は私のためにも働いています。

同じように、2.24.0でロックすると修正されました。

これは、webpack ^ 4.2.0で構築されたAngular7.2アプリ上にあります

はい、2.24.0は正常に機能しています。 誰かが彼らが行った変更が何であるか知っていますか?

同じように、修正バージョンを「^ 2.24」ではなく「2.24」に設定することで問題が修正されました

この修正のためのETAはありますか?

金曜日です。週末の前に2.24.0にダウングレードする必要があるかどうか疑問に思っています。

「moment」:「2.24.0」に変更してみてください。^が含まれていないことを確認してください。 node_modelsを削除し、npminstallを再実行します。 また、package-lock.jsonがある場合は、それを削除する必要があるかもしれません。 それ以外の場合、npmは2.25をインストールし続けます

ありがとう。 バージョンを2.24.0にダウングレードすることで問題が修正されました

あなたはもうその瞬間に生きていません:)

「moment」:「2.24.0」に変更してみてください。^が含まれていないことを確認してください。 node_modelsを削除し、npminstallを再実行します。 また、package-lock.jsonがある場合は、それを削除する必要があるかもしれません。 それ以外の場合、npmは2.25をインストールし続けます

おかげで、問題はバージョンを2.25.0から2.24.0にダウングレードすることで修正されました。 また、「^ 2.24.0」から「2.24.0」までやりました

2.25.0から2.24.0 2.25.0へのダウングレードが機能せず、同じエラーが再度発生する場合は、モジュールを完全にアンインストールしてから再インストールしてください。

npmの使用:

  1. npm uninstall moment
  2. npm install [email protected]

それが役に立てば幸い。

乾杯
Unkn0wn0x

修正がいつリリースされるかについてのアイデアはありますか? これは壊れた問題であり、マスターで変更を加えてモーメントバージョンを2.24に設定するためのアクセス権がなく、本番ビルドが左右に失敗していることがわかりました。
リリースETAのおかげで共有してください

私もこの問題を抱えていました、そして私はそれを修正しました
それらの行を削除することによって
"typesVersions": { ">=3.1": { "*": [ "ts3.1-typings/*" ] } },
150〜156行目

。\ node_modules \ moment \ package.json
これを行った後、バージョン2.25で完全に正常に動作しています

私もこの問題を抱えていました、そして私はそれを修正しました
それらの行を削除することによって
"typesVersions": { ">=3.1": { "*": [ "ts3.1-typings/*" ] } },
150〜156行目

。\ node_modules \ moment \ package.json
これを行った後、バージョン2.25で完全に正常に動作しています

これはローカルで機能しますが、CIパイプラインの場合は疑問です

みんなありがとう:D2.24.0も私のために働いた。

2.24.0にダウングレードされ、正常に動作しています。

2.25.1リリース

2.25.1をテストし、問題はなくなりました。 ありがとう

ええ、私もこれをテストしましたが、問題は発生しませんでした。

確かに、公開されてから数分後にアップグレードされ、すべてが順調です。迅速な修正に感謝します。

最後にそれは私のために働きます。 2.24.0へのダウングレードが機能しています。 ただし、必ず「瞬間」を入力してください:「2.24.0」
「モーメント」の代わりに
azure error

バージョン2.25.1は、モジュールの「モーメント」が見つからない問題を解決しましたが、Angular 8アプリケーションでテストしていると、次のエラーがスローされます。

WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/home/project/node_modules/moment/src/lib/ locale'

他の誰かがこの失敗を経験しましたか?

また、2.25.1では、参照している他の関数のいくつかについて警告が表示されます。

"export 'utc' (imported as 'moment') was not found in 'moment'
"export 'max' (imported as 'moment') was not found in 'moment'
"export 'min' (imported as 'moment') was not found in 'moment'

私にとっては

    "moment": "2.24.0",
    "moment-timezone": "^0.5.31",

私はあなたがバージョン2.29.0に瞬間を更新できると思います

npm uninstall moment
npm install [email protected]

TS2307:Angular8でモジュール「モーメント」が見つかりません

このページは役に立ちましたか?
5 / 5 - 1 評価