Moment: モジュールが見つかりません:エラー:WebpackとTypeScriptで「../moment」を解決できません

作成日 2019年01月11日  ·  9コメント  ·  ソース: moment/moment

バグを説明する

TypeScriptアプリをwebpackでコンパイルしようとすると、ロケールごとに「../moment」を解決できないというエラーが発生します。

このエラーは、他のすべてのロケールで繰り返されます。

ERROR in ./node_modules/moment/locale/km.js
Module not found: Error: Can't resolve '../moment' in 'C:\PROGS\dev\var\private\moment-test\node_modules\moment\locale'
 @ ./node_modules/moment/locale/km.js 5:50-70
 @ ./node_modules/moment/locale sync ^\.\/.*$
 @ ./node_modules/moment/moment.js
 @ ./src/app.ts

再現するには

src / app.ts

import * as moment from "moment";
console.log(moment().format("YYYY"));

package.json

{
    "private": true,
    "dependencies": {
        "moment": "2.23.0"
    },
    "devDependencies": {
        "awesome-typescript-loader": "5.2.1",
        "typescript": "3.2.2",
        "webpack": "4.28.3",
        "webpack-cli": "3.2.1"
    }
}

tsconfig.json

{ "include": [ "./src/" ] }

webpack.config.js

module.exports = {
    entry: "./src/app.ts",
    output: { filename: "bundle.js" },
    resolve: { extensions: [".ts"] },
    module: { rules: [ { test: /\.ts$/, use: { loader: "awesome-typescript-loader" } } ] }
}

予想される行動

yarn run webpack -pはエラーなしで動作するはずです。

モーメント固有の環境

  • ウィンドウズ10
  • ノード10.15.0
  • モーメント2.23.0
  • TypeScript 3.2.2
  • Webpack 4.28.3
  • タイムゾーン:CET(UTC + 1)

ご使用の環境で次のコードを実行し、出力を含めてください。

console.log((new Date()).toString())
console.log((new Date()).toLocaleString())
console.log((new Date()).getTimezoneOffset())
console.log(navigator.userAgent)
console.log(moment.version)

このコードは同じエラーで失敗します!

最も参考になるコメント

私は同じ問題に直面していました、ここに問題がありました-

  • カスタマイズされたコマンドnpm i --save react-momentを使用してインストールしました。これは、 package.jsonファイルに追加されたばかりですが、node_modulesにlibがないため、実行します。
  • npm install --save moment react-moment
  • そして今、それは期待通りに機能しています。

全てのコメント9件

このリクエストを開いていただきありがとうございます。
これはStackOverflowにとって素晴らしい質問です。

これはバグですね。 Stack Overflowは質問に適していますが、バグを修正する人は誰もいません。

私はあなたの答えを、TypeScriptでWebPackをサポートしていないことを意味すると解釈します。 残念な!

MomentをWebpackとTypeScriptで使用する方法については、インターネット上にさまざまなチュートリアルがあります。 他の多くの人がそれらをうまく一緒に使用しているようです。 より多くの人々がこの問題を抱えていて、それを修正するのに十分なコミュニティの知識がある場合、私たちはそうすることを試みることができます。

ちなみに私も同じ問題を抱えていました-私が気にしなかった瞬間のロケールが原因のようです。 私はこのオンライン記事で解決策を見つけました。私の場合は、ロケールプラグインを無視するのに十分でした。

プラグイン:[new webpack.IgnorePlugin(/^.\/ locale $ /、/ moment $ /)]

これはかなり主流の使用シナリオのように思われるので、ドキュメントのTypeScriptセクションから上記のページにリンクすることをお勧めします。

@ authguidance-examples PRはhttps://github.com/moment/momentjs.comで歓迎されてい

私は同じ問題に直面していました、ここに問題がありました-

  • カスタマイズされたコマンドnpm i --save react-momentを使用してインストールしました。これは、 package.jsonファイルに追加されたばかりですが、node_modulesにlibがないため、実行します。
  • npm install --save moment react-moment
  • そして今、それは期待通りに機能しています。

なぜいつも「数秒前」のように表示されるのか誰もが知っていますか? 日付が何であれ

私はreactjsにモーメントを追加しました:import * as moment from "moment"; 依存性注入で追加された: "モーメント": "2.23.0"、しかし取得

未定義のエラー... reactjsで、
親切に助けて...

なぜこの支店は閉鎖されないのですか? 2019年12月2日の最後のコメント。 @ marwahaha

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

関連する問題

M-Zuber picture M-Zuber  ·  3コメント

benhathaway picture benhathaway  ·  3コメント

ninigix picture ninigix  ·  3コメント

tanepiper picture tanepiper  ·  3コメント

Delgan picture Delgan  ·  3コメント