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
手がかりはありますか?
#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' in
、 moment-with-locales
代わりにmoment
とmin/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 /を参照して
最も参考になるコメント
無視モジュールを使用したところ、良い結果が得られました。 これは誰かを助けるかもしれません: