Moment: مسار "./locale" غير موجود في اللحظة / src / lib / locale / locales.js

تم إنشاؤها على ١٩ مارس ٢٠١٨  ·  54تعليقات  ·  مصدر: moment/moment

WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in 'D:\project-fed\ecloud\client-web\node_modules\moment\src\lib\locale'

لقد وجدت أن هناك خطأ ما في الوظيفة أدناه

function loadLocale(name) {
    var oldLocale = null;
    // TODO: Find a better way to register and load all the locales in Node
    if (!locales[name] && (typeof module !== 'undefined') &&
            module && module.exports) {
        try {
            oldLocale = globalLocale._abbr;
            var aliasedRequire = require;
            aliasedRequire('./locale/' + name);
            getSetGlobalLocale(oldLocale);
        } catch (e) {}
    }
    return locales[name];
}

aliasedRequire('./locale/' + name); يجب أن يكون ../locale/ ؟

Troubleshooting

التعليق الأكثر فائدة

فقط قم بالاستيراد كما هو موضح أدناه وهو يعمل:

استيراد لحظة من "لحظة / لحظة" ؛

ال 54 كومينتر

أرى هذا التحذير نفسه عندما أستخدم حزمة الويب لتجميع اللحظات. أي فكرة عندما تم تقديم هذا الخطأ؟

لدي نفس التحذير باستخدام angular-cli أي حل؟

وجود نفس المشكلة. هل تعرف أي حلول / إصلاحات؟

نفس المشكلة - تبدو مشكلة في المسار مع "./locale" مقابل "../locale". هل هناك من يبحث في هذا الخطأ؟

https://github.com/moment/moment/issues/2979

يبدو أن هذا هو الحال منذ سنوات ، فلماذا لا يصلحون الأمر ليس لدي أي فكرة. لقد واجهت هذا أيضًا عند محاولة استخدام jsnext: main in webpack بدلاً من main.

عملي للاستمرار في استخدام jsnext: main in webpack للحزم الأخرى التي تم ترجمة كود es6 بشكل صحيح: استخدم اسمًا مستعارًا لإجبار webpack على استخدام moment.js مباشرةً كما هو محدد في pkg.main

... resolve: { alias: { moment$: path.resolve(root_dir, "node_modules/moment/moment.js") } }

ما ورد أعلاه لم ينجح معي ولكن اتباع هذا البرنامج التعليمي ساعدني في إصلاحه.

https://alligator.io/angular/custom-webpack-config/

هل هناك شيء جديد حول هذا؟ أنا أستخدم Laravel Mix ... نفس الشيء هنا ...

أنا افعل

import * as moment from 'moment';

وهذا يعمل.

أنا افعل

import * as moment from 'moment';

وهذا يعمل.

داخل حزمة الويب؟ أفكر في كيفية القيام بذلك باستخدام Laravel Mix ..

marcelogarbin ، آسف لأنني لم أعبث مع Laravel منذ الإصدار 4. أعتذر ولكني لا أعرف كيف أجعله يعمل مع Laravel mix.

فقط قم بالاستيراد كما هو موضح أدناه وهو يعمل:

استيراد لحظة من "لحظة / لحظة" ؛

حل yaasinhamidi هو الذي

أنا افعل

import * as moment from 'moment';

وهذا يعمل.

أين يجب وضع هذا الخط؟

تواجه نفس المشكلة لأول مرة بعد التحديث إلى 2.25.0. أنا أستخدم أيضًا Laravel Mix (لاحظ ، لم أواجه هذه المشكلة مطلقًا في أي إصدارات سابقة).

الحل البديل الخاص بي هو العودة إلى 2.24.0

أواجه نفس المشكلة بعد التحديث

إلى أن يتم إصلاحه ، فإن الرجوع إلى الإصدار 2.24.0 يحل هذه المشكلة.

التراجع إلى الإصدار 2.24.0 كان مفيدًا بالنسبة لي أيضًا.

بالنسبة لأي شخص آخر يعاني من هذه المشكلة ، كان علي أيضًا فرض إصدارات اللحظات التي قامت الحزم الأخرى الموجودة في مجلد node_modules/ بسحبها باعتبارها تبعيات إلى الإصدار 2.24.0 أيضًا

باستخدام الغزل ، إضافة هذا السطر إلى package.json فرز الأشياء بالنسبة لي

"resolutions": {
        "**/moment": "2.24.0"
    },

مرحبا يا شباب!
لقد واجهت نفس المشكلة من الساعات القليلة الماضية وأخيراً قمت بحلها من خلال تغيير الإصدار الحالي.

في التعليقات أعلاه رأيت الحل النهائي.

سبب:
_ لحظة إصدار الإصدار الجديد قبل 17 ساعة من 2.24.0 إلى 2.25.0_

حل:
الخطوة 1: قم بتغيير الإصدارات

  • "اللحظة": "2.24.0"،
  • "المنطقة الزمنية اللحظية": "^ 0.5.28"،

الخطوة 2: إذا كنت تستخدم الغزل ، فيرجى إضافة دقة في ملف package.json الخاص بك مثل هذا
"التبعيات" {
"اللحظة": "2.24.0"،
"المنطقة الزمنية اللحظية": "^ 0.5.28"
} ،
"القرارات": {
"اللحظة": "2.24.0"
} ،

اشكرك.

حتى لو كان لديك ، متابعة كتلة. سيقوم package-lock.json بإنشاء إصدار جديد مثل 2.5.1. لذا قم بتغييرها إلى "لحظة": "2.24.0" حتى يتم معالجة المشكلة.
"التبعيات" {
"لحظة": "^ 2.24.0" ، ----------------> "لحظة": "2.24.0"
} ،

لقد تراجعت إلى 2.24.0 ولكن لا يزال هناك نفس التحذير أثناء استخدام العقدة

من الغريب أنني بدأت أتلقى هذا الخطأ اليوم بعد إعادة تثبيت التبعيات ، ولم ينجح الإصلاح المقترح لتجاهل المكونات الإضافية المحلية مع حزمة الويب. ما نجح هو ترك الإصدار ثابتًا عند 2.24.0 كما اقترحه @ sachins81 . أتساءل عما إذا تغير شيء ذو صلة في الالتزامات الأخيرة؟ ichernev

لقد تراجعت إلى 2.24.0 ولكن لا يزال هناك نفس التحذير أثناء استخدام العقدة
nitindevelopermca تأكد من أنه "2.24.0" وليس "^ 2.24.0". (عملت معي بعد تغييرها)

لقد عدت للتو إلى "^ 2.18.1" ويبدو أن كل شيء يعمل بشكل جيد

نفس المشكلة باستخدام رد الفعل ، اللحظة ليست تبعية لمشروعي لذا لا يمكنني التراجع عنها

نفس المشكلة باستخدام رد الفعل ، اللحظة ليست تبعية لمشروعي لذا لا يمكنني التراجع عنها

يمكنك تشغيل هذه الأوامر في الوقت الحالي.

npm install [email protected] --save

كانت لدي نفس الحالة وعندما أبحث بطريقة أو بأخرى كانت تستخدم اللحظة كتبعية وآمل أن يتم إغلاق المشكلة اللحظية في الإصدار التالي بينما رأيت أنهم أصدروا إصدارًا جديدًا ، لذا يرجى أولاً تجربة الإصدار الأخير وهو 2.25.1 بعد ذلك حاول أن تضيف اللحظة على أنها تبعية.

اشكرك!

لقد ساعدني ذلك على التغيير إلى الإصدار الثابت 2.24.0 داخل dependencies وداخل resolutions . أستخدم الحزمة داخل الكود الخاص بي وكتبعية react و antd .

إذا كان لديك العديد من مساحات العمل ، فلا تنس تغيير جميع ملفات package.json . لقد نسيت هذا في البداية.

حدثت نفس المشكلة في الإصدار 2.25.1 ، ثم أحاول إضافة هذه في package.json (أستخدم الغزل):

"dependencies" {
  "moment": "2.24.0"
},
"resolutions": {
  "moment": "2.24.0"
},

نفس الخطأ هنا. أنا هايف

"dependencies": {
    "moment": "^2.25.1"
}

وعندما أقوم بتشغيل npm run production أحصل على:
shell script WARNING in ./node_modules/moment/src/lib/locale/locales.js Module not found: Error: Can't resolve './locale' in '/var/www/apf.local/html/node_modules/moment/src/lib/locale' @ ./node_modules/moment/src/lib/locale/locales.js @ ./node_modules/moment/src/lib/locale/locale.js @ ./node_modules/moment/src/moment.js @ ./resources/js/app.js @ multi ./resources/js/app.js

مع إصدار ~2.24.0 ، كل شيء يعمل كما هو متوقع.

مرحبا يا شباب!
لقد واجهت نفس المشكلة من الساعات القليلة الماضية وأخيراً قمت بحلها من خلال تغيير الإصدار الحالي.

في التعليقات أعلاه رأيت الحل النهائي.

سبب:
_ لحظة إصدار الإصدار الجديد قبل 17 ساعة من 2.24.0 إلى 2.25.0_

حل:
الخطوة 1: قم بتغيير الإصدارات

  • "اللحظة": "2.24.0"،
  • "المنطقة الزمنية اللحظية": "^ 0.5.28"،

الخطوة 2: إذا كنت تستخدم الغزل ، فيرجى إضافة دقة في ملف package.json الخاص بك مثل هذا
"التبعيات" {
"اللحظة": "2.24.0"،
"المنطقة الزمنية اللحظية": "^ 0.5.28"
} ،
"القرارات": {
"اللحظة": "2.24.0"
} ،

اشكرك.

فقط قم بالاستيراد كما هو موضح أدناه وهو يعمل:

استيراد لحظة من "لحظة / لحظة" ؛

رائعة! إنها تعمل!

شكرا .
عملها جيد. فقط قم باستيراد السطر أدناه:
استيراد * كلحظة من "لحظة / لحظة" ؛

فقط قم بالاستيراد كما هو موضح أدناه وهو يعمل:

استيراد لحظة من "لحظة / لحظة" ؛

حل رائع :) حل صداع كبير مع هذا

Fantastic fix :) solved a major headache with this

إصلاح متواضع ، إذا لم يكن لدى شخص ما علاقة مباشرة.

لقد واجهت نفس المشكلة ولكن ليس لدي Momjs في التبعيات. لكن أنتد يفعل.
ولا يمكن أن تعمل npm مع القرارات.

الحل الوحيد بالنسبة لي الآن هو تخفيض مستوى antd.
لا أستطيع أن أرى الحل المناسب الذي لن يشمل حزمة إضافية لجعل الأشياء تعمل.

لدي نفس المشكلة في تطبيق React الخاص بي والذي ، لسبب ما ، بدأ بالظهور باللون الأزرق. لقد كنت أستخدم moment في هذا التطبيق إلى الأبد ولم ألاحظ هذا الخطأ مطلقًا. لقد أصبح في الواقع خطأ في حالتي لأن تطبيق React الخاص بي لن يتم تجميعه بسبب هذه المشكلة.

ثم حاولت بعد ذلك import moment from 'moment/moment'; الذي أصلح مشكلة الترجمة ولكني ما زلت أتلقى التحذير التالي في كل مرة أقوم فيها بتشغيل التطبيق.

./node_modules/moment/src/lib/locale/locales.js
Module not found: Can't resolve './locale' in 'C:\Users\myname\source\repos\myapp\node_modules\moment\src\lib\locale'

نعمة الحفظ الوحيدة هي أن تطبيق React الخاص بي ، على الأقل ، يجمع ويعمل بشكل جيد.

لدي نفس المشكلة مع إنشاء التطبيق (قالب من نوع الكتابة) أيضًا ، لقد جربت import moment from 'moment'; ثم تلقيت الخطأ:
./node_modules/moment/src/lib/locale/locales.js Module not found: Can't resolve './locale' in 'D:\MyName\Learning\ProjectName\node_modules\moment\src\lib\locale'

devayarhlaine لدي حل مؤقت في التعليقات أعلاه ، يرجى التحقق منه.

لقد كانت لحظة إصدار جديد.

نفس ما ورد أعلاه:
لدي نفس المشكلة مع "لا يمكنني العثور على وحدة" لحظة "" أيضًا.
باستخدام الحل مع "الاستيراد * لحظة من" لحظة / لحظة "حل مشكلة واحدة.
ولكن بعد ذلك حصلت على الخطأ:
./node_modules/moment/src/lib/locale/locales.js الوحدة النمطية غير موجودة: لا يمكن حل "./locale" في "D: \ MyName \ Learning \ ProjectName \ node_modulesmoment \ src \ lib \ locale"
والتخفيض ليس حلاً (في رأيي :-).

حصلت على هذا الخطأ عند الترقية من الزاوية 8 إلى الزاوية 9.1.
أدت الترقية إلى اللحظة 2.25.1 إلى حل المشكلة رقم 5486 ("TS2307: لا يمكن العثور على الوحدة النمطية" لحظة ".") ، ولكن ظل الخطأ المحلي.

بالنسبة لأولئك الذين يستخدمون الأمر "إنشاء تطبيق تفاعل"، يتمثل الإصلاح في تحرير node_modules / رد فعل-scripts / config / webpack.config.js لإضافة الاسم المستعار كما هو موضح أدناه.

moment$: 'moment/moment.js'

أدخل السطر أعلاه في كتلة الاسم المستعار في السطر رقم 311.

alias: {
  // Support React Native Web
  // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
  'react-native': 'react-native-web',
  // Allows for better profiling with ReactDevTools
  ...(isEnvProductionProfile && {          'react-dom$': 'react-dom/profiling',
  'scheduler/tracing': 'scheduler/tracing-profiling',        }),
  ...(modules.webpackAliases || {}),        
  moment$: 'moment/moment.js'
},

هناك طريقة أخرى لحل هذه المشكلة وهي استبدال moment.js بـ Day.js. اتبع التعليمات الواردة في عنوان url هذا لاستخدام رد فعل التطبيق-Rewired >> https://ant.design/docs/react/use-with-create-react-app. قم بتعديل package.json وفقًا للتعليمات. ثم قم بإنشاء config-overrides.js في المجلد الجذر كما هو موضح أدناه. هذا له ميزة تقليص js من 231.11 كيلو بايت إلى 11.11 كيلو بايت وفقًا لهذا https://github.com/ant-design/antd-dayjs-webpack-plugin.

const { override, addWebpackPlugin } = require('customize-cra');    
const AntdDayjsWebpackPlugin = require('antd-dayjs-webpack-plugin');

module.exports = override(
        addWebpackPlugin(new AntdDayjsWebpackPlugin())
);

فقط قم بالاستيراد كما هو موضح أدناه وهو يعمل:

استيراد لحظة من "لحظة / لحظة" ؛

إصلاح رائع !!!

فقط قم بالاستيراد كما هو موضح أدناه وهو يعمل:

استيراد لحظة من "لحظة / لحظة" ؛

عملت من أجلي

يبدو أن جذر المشكلة ناتج عن حقل "module" في package.json (https://github.com/moment/moment/commit/9ce89e7fea881b39be23b8c0646f7ef7817985d9)

هنا العلاقات العامة لإصلاحها https://github.com/moment/moment/pull/5503

نعم ، إزالة "module": "./src/moment.js", من package.json جعلت التحذير يختفي. راجع للشغل ، التطبيق الخاص بي هو تطبيق React - create-react-app وأنا أستخدم "moment": "^2.25.1" . على الرغم من أنني كنت أستخدم أحدث إصدار ، إلا أنني ما زلت أتلقى هذا الخطأ ولكن يبدو أن تحديث package.json يصلح المشكلة. شكرا ApacheEx

لقد أصلحت هذا الخطأ ، على الأقل بالنسبة لي.

ذهبت إلى node_modules / moment / src / lib / locale /
عدّل ملف locales.js باستخدام ctrl + f وابحث في سطر './locale'+name .
قم بتغييره إلى './'+name .
لا أعرف سبب الإشارة إلى نفس المجلد واسم "/.locale" + ، ولهذا السبب يشير الخطأ إلى أنه لا يمكن حله. / locale

لأكون صادقًا ، قمت بنسخ السطر الأصلي وعلقت أعلاه ، إذا ظهر خطأ في المستقبل.

إذا كان يساعد ، ممتاز. هذا النوع من الأخطاء هو الأسوأ ...

وجود نفس المشكلة ، تم الرجوع إلى 2.24 حتى يتوفر الإصلاح. لا يمكنني تحرير ملفات الوحدة النمطية ، لأنني أقوم بالبناء على خادم تلقائي ، لذا أنتظر إصدارًا رسميًا.

لدي نفس المشكلة مع الإصدار 2.24 و 2.25.1
WARNING in ./node_modules/moment/src/lib/locale/locales.js

عندما أقوم بفتح وحدة تحكم المتصفح ، أرى هذا الخطأ:
TypeError: Cannot read property 'defineLocale' of undefined at locales.min.js:1

نواجه نفس المشكلة مع لحظة 2.22

فقط قم بالاستيراد كما هو موضح أدناه وهو يعمل:

استيراد لحظة من "لحظة / لحظة" ؛

أين يجب وضع هذا الخط؟

فقط قم بالاستيراد كما هو موضح أدناه وهو يعمل:
استيراد لحظة من "لحظة / لحظة" ؛

أين يجب وضع هذا الخط؟

في الملف الذي تريده استخدم Momjs على ecmascript مثل أدناه:

import moment from 'moment/moment';
(() => {
const now = moment(moment.now());
console.log(now);
})

2.25.3 يجب أن يصلح هذه المشكلة.
يرجى فتح مشكلة أخرى إذا كان لا يزال لديك تحديات.
أو يمكنك تجربة Stack Overflow لمزيد من الأسئلة الفردية.

هذا الاسم المستعار مع WebPack config يصلح مشكلة بالنسبة لي:

resolve: {
  extensions: ['.js', '.ts'],
  alias: {
    './locale': 'moment/locale'
  }
}

إذا كنت تستخدم المنطقة الزمنية اللحظية:
https://github.com/moment/moment-timezone/issues/837

أصلح هذا مع هذا:

import moment from 'moment'; import 'moment/locale/pt-br';

إنه يعمل ، ويتم تعيين اللغة على "pt-br" ، وتعمل جميع اللغات الأخرى أيضًا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

vbullinger picture vbullinger  ·  3تعليقات

benhathaway picture benhathaway  ·  3تعليقات

BCup picture BCup  ·  3تعليقات

ninigix picture ninigix  ·  3تعليقات

dogukankotan picture dogukankotan  ·  3تعليقات