أتلقى هذا التحذير عند استخدام حزمة الويب:
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)$/)
لم تعمل
المشكلة المذكورة أعلاه هي عبارة عن عبارة require('./locale' + name)
مضمنة في الملف min / moment-with-locales.js. لم يعد ضروريًا بعد الآن لأن جميع اللغات مضمنة بالفعل في هذا الملف نفسه.
لسوء الحظ يحاول webpack حل جميع بيانات الطلب - وبالتالي هذا التحذير.
ichernev - لا أستخدم حزمة الويب ، ولكن يبدو أن النقطة التي يضعهاmheimschild منطقية. لست متأكدا من كيفية التعامل معها بالرغم من ذلك.
إن أبسط حل لكيفية إقناع webpack بعدم البحث عن اللغات المضمنة بالفعل في Mom-with-locales.js هو إجباره على تحميل شيء آخر بدلاً من ذلك. نجح هذا بالنسبة لي:
تثبيت وحدة فارغة (الأدبية لا تحتوي على أي شيء)
npm install --save-dev empty-module
ثم قم بتكوين ContextReplacementPlugin على النحو التالي
new webpack.ContextReplacementPlugin(/\.\/locale$/, 'empty-module', false, /js$/)
نأمل أن يساعد هذا.
شكرًا لك على الحل البديل mheimschild - كان من الجيد أن يتم حل هذا بالفعل في Webpack 2 ، حتى لو تم تضمين الوحدة الفارغة تلقائيًا باعتبارها تبعية للمطور.
يبدو أنه لا داعي لاستخدام empty-module
، فقط قم بتغييره إلى فارغ ، ولا يزال يعمل في ContextReplacementPlugin
new webpack.ContextReplacementPlugin(/\.\/locale$/, null, false, /js$/)
واجهت للتو مشكلة مماثلة عند استخدام Momjs عبر npm
لقد اكتشفت أنه في locales.js
يشير إلى ./locale/
أفترض أن هذا الخط يحاول إيجاد توطين اللغة. CMIIW
في غضون ذلك ، توجد ملفات الإعدادات المحلية على ../../locale/
من locale.js
من خلال تغيير هذا السطر إلى require ('../../locale/' + name);
قمت بحل المشكلة ولكن لم أتمكن من تعديل node_modules
مباشرة مثل هذا على الخادم الخاص بي
سنحاول طريقة webpack المذكورة أعلاه لاحقًا
تحرير: كنت أقوم بتشغيل هذا على windows ، يبدو أنه مشكلة في المسار. حاولت تشغيل لحظة على لينكس وهو يعمل بشكل جيد
لقد استخدمت وحدة التجاهل بنتائج جيدة. قد يساعد هذا شخصًا ما:
// /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 أو ما شابه - هل يمكننا الحصول على طلب سحب من المستندات لذلك؟ سيكون في قسم الاستخدام ضمن حزمة الويب.
كيفية الإصلاح في Hybrid Apps Ionic 3.5 مع Angular 4 حيث لا يوجد ملف webpack.config؟
لقد جربت اقتراح miguelrincon أعلاه ولكنه لا يعمل.
على سبيل المثال ، لا يحدث الخطأ أثناء الإنشاء ، ولكن يتم إلقاء نفس الخطأ في سجل وحدة تحكم المتصفح.
بعد النظر حولي ، وجدت هذا وهو يعمل بشكل مثالي!
https://github.com/afc163/react-boilerplate/commit/61ec8a19df0fcb56d407b795cb6c87141e0e14a7
\\ webpack.js
resolve: {
....
alias: {
moment$: 'moment/moment.js',
},
...
}
ظهرت هذه المشكلة بالنسبة لي في لحظة. js 2.19.0. إذا كنت بحاجة إلى تشغيل التطبيق الخاص بك الآن ، فيجب على التراجع القيام بذلك. فمثلا:
npm install [email protected] - حفظ
شكرا لك @ jeff3dx لقد تم
@ jeff3dx لقد حدث نفس الشيء تمامًا مع أحدث إصدار ، ولكن إضافة الاسم المستعار للحل كما اقترحه @ M1chaelTran لا يزال يفعل الحيلة.
أؤكد أن التمسك بـ 2.18 يعمل على إصلاح المشكلة على الفور.
كذلك هنا. باستخدام React 16 ، تم تثبيت لحظة 2.19 وحصلت على أخطاء. تم الرجوع إلى 2.18 ، بدون أخطاء.
عزيزي ، أنا أحلها!
src / lib / locale / locales.js في السطر 61 ،
61 تتطلب ('./ locale /' + name) ؛
تغير ليكون:
61 تتطلب ('./' + الاسم) ؛
"لحظة مع لغات:" ./locale "غير موجود" سيتم حلها.
@ wushuang5112 ، لا يمكنك تعديل node_module ، لذا فإن الحل يتطلب إضافة لحظة إلى المستودع ، وهذا ليس جيدًا
لقد واجهنا أيضًا مشكلة عند الترقية إلى اللحظة 2.19 في تطبيق يستخدم أيضًا رد فعل و webpack. العودة إلى 2.18 إصلاحه.
بدلاً من مجرد التراجع ، سأستخدم حل
تم حلها! ... الإصدار 2.19.1
@ M1chaelTran يا رجل أنت نعمة ، شكرا جزيلا لك !!!
ما زلت أرى المشكلة في الإصدار 2.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
و min/locales
بدلاً من moment-with-locales
. انها ثابتة بالنسبة لي!
أفضل مرجع لذلك هو:
http://momentjs.com/docs/#/i18n/loading -into-browser /
الرجوع إلى الإصدار 2.18 لا يحل المشكلة بالنسبة لي. لا يزال لديك هذا: خطأ: لا يمكن العثور على الوحدة النمطية "./locale"
الغريب أنه لإصلاح هذا:
react-native
يجب علي استيراد ملف moment-with-locales
reactjs
، لا بد لي من استيراد ملف moment/locales
manelephant أعتقد أن هذا يحل المشكلة: https://github.com/moment/moment/issues/2979#issuecomment -346636284
الرجوع إلى الإصدار 2.18 لا يحل المشكلة بالنسبة لي.
أنا استخدم الزاوية cli.
عملت اللحظة ولكن عندما أريد تصدير المكون الخاص بي باستخدام npm ، قم بتشغيل packagr ==>
تجميع في FESM15
لم يتم تصدير "locale" بواسطة "node_modulesmoment \ srcmoment.js"
خطأ في البناء
لا يمكن استدعاء مساحة الاسم ("لحظة")
خطأ: لا يمكن استدعاء مساحة الاسم ("لحظة")
هل من احد يساعدني ؟
يبدو أن هناك الكثير من النصائح المفيدة في هذا الموضوع. نود أن نأخذ بعض العلاقات العامة على مستنداتنا حول هذا الأمر! https://github.com/moment/momentjs.com
شكرا على كل المعلومات.
تحديث: لقد وجدت حلاً.
الطريقة الصحيحة للاستيراد:
import * as moment_ from 'moment';
const moment = moment_;
وفي ng-package.json:
{
"lib": {
"externals": {
"moment": "moment"
}
}
}
بالنسبة لي ، كان الهيكل خاطئًا ، ولم تكن العناصر الخارجية داخل lib ، لذلك كانت packgr تبحث عن lib.externals ولم تستطع العثور على لحظة.
نغ-باكجر ولحظة
أنا أستخدم أحدث إصدار ، وهو الآن 2.22.2.
بينما أحاول استخدام ng-packagr وحزم مشروعي ، أتلقى هذا الخطأ. مثل:vZanchiV
لم يتم تصدير "locale" بواسطة "node_modulesmoment \ srcmoment.js"
خطأ في البناء
لا يمكن استدعاء مساحة الاسم ("لحظة")
خطأ: لا يمكن استدعاء مساحة الاسم ("لحظة")
في المشروع هو المستورد بهذه الطريقة:
استيراد * كلحظة من "لحظة" ؛
لقد وجدت حلاً لم يتم بشكل جيد ، حاولت استيراده مثل:
استيراد * كلحظة يتم استيرادها من "لحظة" ؛
بعد هذه الطريقة يمكنني تصدير مشروعي باستخدام ng-packagr لكنني فشلت بعد ذلك في استيراد مشروعي في مشروع آخر ، مع هذه المشكلة
الوحدة غير موجودة: خطأ: لا يمكن حل "./locale" في "C: \ development \ angularTest \ angulartestnode_modules \ modulename
لتأكيد حل @ francisrod01 ، قمت بتغيير الاستيراد الخاص بي ، لذا بدلاً من
import moment from 'moment/min/moment-with-locales'
لقد تغيرت إلى
import moment from 'moment'
import 'moment/min/locales'
وهذا حل بالنسبة لي. آمل أن يساعد.
لقد وجدت حل الاسم المستعار المنشور أعلاه بواسطة @ M1chaelTran للعمل بشكل جيد. في حال تساءل شخص يستخدم Laravel Mix عن كيفية تطبيقه ، يجب أن يبدو 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 شكرًا ، هذا الحل يعمل مع رد الفعل المعياري الإصدار 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"
نجح حل
"resolutions": {
"moment": "2.24.0"
}
أضف أعلاه إلى package.json وإعادة الغزل. مناسب لي
webpack.config.js
من فضلك أين يمكنني العثور على هذا الملف ، لا يمكنني العثور على المسار الذي أشرت إليه ، شكرًا مقدمًا ،
لقد قمت بحل بديل عن طريق نسخ مجلد مصدر اللحظة من مشروع قديم ، وقد نجح معي
راجع https://momentjs.com/docs/#/ -project-status /
التعليق الأكثر فائدة
لقد استخدمت وحدة التجاهل بنتائج جيدة. قد يساعد هذا شخصًا ما: