<p>ロケールのある瞬間:「。/locale」が見つかりません</p>

作成日 2016年02月22日  ·  48コメント  ·  ソース: moment/moment

webpackを使用すると、次の警告が表示されます。

WARNING in ./~/moment/min/moment-with-locales.js
Module not found: Error: Cannot resolve 'file' or 'directory' ./locale in \node_modules\moment\min
@ ./~/moment/min/moment-with-locales.js 271:16-43

手がかりはありますか?

Discussion Documentation Help Wanted

最も参考になるコメント

無視モジュールを使用したところ、良い結果が得られました。 これは誰かを助けるかもしれません:

    // /app/js/webpack.config.js
    plugins: [

        // Fixes warning in moment-with-locales.min.js 
        //   Module not found: Error: Can't resolve './locale' in ...
        new webpack.IgnorePlugin(/\.\/locale$/)
    ]

全てのコメント48件

#1435を参照してください。 最後に回避策。 ありがとう。

webpack.config.jsの「プラグイン」で推奨される回避策

new webpack.ContextReplacementPlugin(/moment[\\\/]locale$/, /^\.\/(en|de|cz|eu)$/)

動作しませんでした

上記の問題は、ファイルmin / moment-with-locales.jsに含まれているrequire('./locale' + name)ステートメントに関するものです。 すべてのロケールがこのファイル自体にすでに含まれているため、これ以上は必要ありません。

残念ながら、webpackはすべてのrequireステートメントを解決しようとします-したがって、この警告。

@ ichernev-私は@ mheimschildの主張は妥当なようです。 しかし、それを処理する方法がわかりません。

moment-with-locales.jsにすでに含まれているロケールを検索しないようにwebpackを説得する最も簡単な解決策は、代わりに何か他のものをロードするように強制することです。 これは私のために働いた:

空のモジュールをインストールします(文学には何も含まれていません)
npm install --save-dev empty-module
次に、ContextReplacementPluginを次のように構成します
new webpack.ContextReplacementPlugin(/\.\/locale$/, 'empty-module', false, /js$/)

うまくいけば、これが役立つでしょう。

回避策をありがとう@ mheimschild-空のモジュールが開発依存関係として自動的に含まれる場合でも、これがWebpack2ですでに解決されていればよかったと思います。

empty-moduleを使用する必要はないようです。nullに変更するだけで、ContextReplacementPluginでも機能します。

new webpack.ContextReplacementPlugin(/\.\/locale$/, null, false, /js$/)

npm介してmomentjsを使用するときに同様の問題が発生しました
locales.jsでは./locale/ていることがわかりました
私はその行が言語のローカリゼーションを見つけようとしていると思います。 CMIIW

一方、ロケールファイルは../../locale/からlocale.js
その行をrequire ('../../locale/' + name);に変更することで問題を解決しましたが、サーバー上でこのようにnode_modules直接編集することはできません

後で上記のwebpackの方法を試します

編集:私はこれをWindowsで実行していましたが、パスの問題のようです。 Linuxでmomentを実行してみましたが、問題なく動作します

無視モジュールを使用したところ、良い結果が得られました。 これは誰かを助けるかもしれません:

    // /app/js/webpack.config.js
    plugins: [

        // Fixes warning in moment-with-locales.min.js 
        //   Module not found: Error: Can't resolve './locale' in ...
        new webpack.IgnorePlugin(/\.\/locale$/)
    ]

@miguelrinconは正常に動作します!

驚くばかり。 できます!

@miguelrinconまたは同様のもの-そのためのドキュメントでプルリクエストを取得できますか? webpackの下のuseセクションにあります。

webpack.configファイルがないAngular4を使用したハイブリッドアプリIonic3.5で修正するにはどうすればよいですか?

上記の@miguelrinconの提案を試し
つまり、ビルド中にエラーはスローされませんが、ブラウザコンソールログに同じエラーがスローされます。

周りを見回した後、私はこれを見つけました

https://github.com/afc163/react-boilerplate/commit/61ec8a19df0fcb56d407b795cb6c87141e0e14a7

\\ webpack.js

resolve: {
   ....
   alias: {
      moment$: 'moment/moment.js',
   },
   ...
}

この問題は、moment.js2.19.0で発生しました。 アプリケーションを今すぐ動作させる必要がある場合は、ロールバックで実行する必要があります。 例えば:

npm install [email protected] --save

ありがとう@ jeff3dxこれで私の問題は修正されました!

@ jeff3dx最新バージョンでもまったく同じことが起こりましたが、 @ M1chaelTranによって提案された解決エイリアスを追加してもうまく

2.18に固執すると、問題がすぐに修正されることを確認します。

こっちも一緒。 React 16を使用して、モーメント2.19をインストールし、エラーが発生しました。 エラーなしで2.18に戻りました。

親愛なる、私はそれを解決します!
61行目のsrc / lib / locale / locales.js、
61 require( './ locale /' + name);
次のように変更します。
61 require( './' + name);
「ロケールのある瞬間:「。/locale」が見つかりません」が解決されます。

@ wushuang5112 node_moduleを編集できないため、ソリューションではリポジトリにモーメントを追加する必要がありますが、これは適切ではありません。

また、reactとwebpackを使用しているアプリでmoment2.19にアップグレードするときにも問題が発生しました。 2.18に戻すと修正されました。

単にロールバックする代わりに、webpackconfig内でmomentjsのエイリアスを使用する@ M1chaelTranのソリューションを使用します。 チャームのように働き、最新のものを使い続けることができます。

解決しました! ... v2.19.1

@ M1chaelTran男あなたは祝福です、どうもありがとうございました!!!

v2.19.1でもまだ問題が発生しています

WARNING in ./~/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/project/node_modules/moment/src/lib/locale'
 @ ./~/moment/src/lib/locale/locales.js 56:12-46
 @ ./~/moment/src/lib/locale/locale.js
 @ ./~/moment/src/moment.js
 @ dll reactBoilerplateDeps

ただし、 @ M1chaelTranエイリアストリックは私にとってはうまく

@electrobabe問題は...ドキュメントはこれについて時代遅れだと思います。 そう...

これを解決するには: Can't resolve './locale' inmoment-with-locales代わりにmomentmin/localesをインポートしてみてください。 それは私に固定されています!

これに関するより良いリファレンスは次のとおりです。
http://momentjs.com/docs/#/i18n/loading -into-browser /

2.18にダウングレードしても、問題は解決しません。 まだこれがあります:エラー:モジュール "./locale"が見つかりません

奇妙なことは、これを修正することです:

  • react-nativeプロジェクトでmoment-with-localesファイルをインポートする必要があります
  • reactjsプロジェクトでは、 moment/localesファイルをインポートするだけです。

@manelephantこれで問題が解決すると思います: https

2.18にダウングレードしても、問題は解決しません。

角度のあるCLIを使用します。
瞬間は機能しましたが、npmでコンポーネントをエクスポートしたい場合はpackagrを実行してください==>

FESM15へのコンパイル
「ロケール」は「node_modulesmoment \ srcmoment.js」によってエクスポートされません

ビルドエラー
名前空間を呼び出せません( 'moment')
エラー:名前空間を呼び出すことができません( 'moment')

誰かが私を助けることができますか?

このスレッドには役立つアドバイスがたくさんあるようです。 私たちはこれについて私たちのドキュメントでいくつかのPRをしたいと思っています! https://github.com/moment/momentjs.com

すべての情報をありがとう。

更新:私は解決策を見つけました。

インポートする正しい方法:

import * as moment_ from 'moment'; const moment = moment_;

およびng-package.json内:

{ "lib": { "externals": { "moment": "moment" } } }

私の場合、構造はfalseで、外部はlibの内部になかったため、packgrはlib.externalsを探していて、瞬間を見つけることができませんでした。

Ng-packgr&moment

私は最新バージョンを使用していますが、現在は2.22.2です。

ng-packagrを使用してプロジェクトをパックしようとすると、このエラーが発生します。 と同じ:@vZanchiV

「ロケール」は「node_modulesmoment \ srcmoment.js」によってエクスポートされません

ビルドエラー
名前空間を呼び出せません( 'moment')
エラー:名前空間を呼び出すことができません( 'moment')

プロジェクトでは、このようにインポーターです:

'moment'からのモーメントとして*をインポートします。

うまくいかない回避策を見つけたので、次のようにインポートしてみました:

import * as momentImported from'moment ';

この方法の後、ng-packagrを使用してプロジェクトをエクスポートできましたが、別のプロジェクトへのプロジェクトのインポートに失敗しました。この問題が発生しました。

モジュールが見つかりません:エラー:「C:\ development \ angularTest \ angulartestnode_modules \ modulename」の「./locale」を解決できません

@ francisrod01のソリューションを確認するために、インポートを変更しました。

import moment from 'moment/min/moment-with-locales'

に変更しました

import moment from 'moment'
import 'moment/min/locales'

そして、これは私のために解決しました。 それが役に立てば幸い。

@ M1chaelTranによって上記に投稿されたエイリアスソリューションがうまくwebpack.mix.jsは上部の次のようになります。

let mix = require('laravel-mix');

mix.webpackConfig({
    resolve: {
        alias: {
            moment$: 'moment/moment.js'
        }
    }
});

上記のすべての解決策を試してください、「ダウングレードモーメントバージョン」のみが解決できますが、「antd」のような私のモジュールのいくつかは2.19.0が必要です。 だから私はそれをダウングレードすることはできないと思います

        new webpack.ContextReplacementPlugin(/^\.\/locale$/, (context) => {
            if (!/\/moment\//.test(context.context)) return;

            Object.assign(context, {
                regExp: /^\.\/\w+/,
                request: '../../locale', // resolved relatively
            });
        }),

この解決策は私のために働いた。

#4216(および起動する#3872)と同じ問題のようです。

歴史が最も大きい#4216を参照するのがおそらく最善です

@aaronkrohnありがとう、このソリューションはreact-boilerplatev.4で動作します

moment.min.jsではなく、最初にロケールをロードしてみてください。

「瞬間」:[
"../node_modules/moment/locale/en-au.js"、
"../node_modules/moment/min/moment.min.js"
]

これで私の問題は解決します。

私には2.24.0瞬間があり、これはついに私のために働きました:

    // Fixes warning in moment-with-locales.min.js
    //   Module not found: Error: Can't resolve './locale' in ..
    new webpack.ContextReplacementPlugin(/^\.\/locale$/, context => {
      if (!/\/moment\//.test(context.context)) return

      Object.assign(context, {
        regExp: /^\.\/\w+/,
        request: '../locale', // resolved relatively
      })
    })

ほとんど@aaronkrohnの修正と同じですが、代わりにrequest: '../../locale',私が使用していたrequest: '../locale',

この問題の修正は次のとおりです。

ファイル: "moment \ src \ liblocalelocales.js" 56行目:
「./locale」を「../../locale」に変更する必要があります

アレクサンドラ

修正は簡単です...

このようなものを見つけてください:

import moment from 'moment/src/moment';

これに置き換えます

import * as moment from 'moment';

create-react-appを使用すると、以下のインポートが正常に機能しました

import * as moment from "moment/moment.js"

create-react-appを使用すると、以下のインポートが正常に機能しました

import * as moment from "moment/moment.js"

@mssuiのソリューションは私のために働いた

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

上記をpackage.jsonに追加し、yarnを再作成します。 大丈夫

webpack.config.js

このファイルはどこにありますか、参照したパスが見つかりません。よろしくお願いします。

古いプロジェクトからmomentsourceフォルダーをコピーして回避策を実行しましたが、うまくいきました。

https://momentjs.com/docs/#/ -project-status /を参照して

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

関連する問題

alvarotrigo picture alvarotrigo  ·  3コメント

chitgoks picture chitgoks  ·  3コメント

slavafomin picture slavafomin  ·  3コメント

BCup picture BCup  ·  3コメント

RobinvanderVliet picture RobinvanderVliet  ·  3コメント