<p>لحظة مع لغات: "./locale" غير موجود</p>

تم إنشاؤها على ٢٢ فبراير ٢٠١٦  ·  48تعليقات  ·  مصدر: moment/moment

أتلقى هذا التحذير عند استخدام حزمة الويب:

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)$/)

لم تعمل

المشكلة المذكورة أعلاه هي عبارة عن عبارة 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 /

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