Moment: الحصول على خطأ webpack بعد التحديث إلى 2.19.0

تم إنشاؤها على ١٠ أكتوبر ٢٠١٧  ·  23تعليقات  ·  مصدر: moment/moment

لا أعرف ما إذا كان مرتبطًا بـ # 4216 لأنني أستخدم Angular 4.4.4 وهذه مشكلة React ، لذلك أنا أنشر هذا كمسألة منفصلة.

حصلت على الخطأ التالي بعد التحديث:

__WEBPACK_IMPORTED_MODULE_2_moment__ is not a function

أنا أستخدم حزم moment التالية

"moment": "2.19.0",
"@types/moment": "2.13.0",   

الكود الذي أحصل فيه على الخطأ بسيط للغاية:

import * as moment from 'moment';
...

  if (moment().year() !== this.mainData.activeYear)

...

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

كذلك هنا. عدم استخدام Angular أو React. هذا هو خطأ webpack الخاص بي:

WARNING in ./~/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/data/jenkins/workspace/project/node_modules/moment/src/lib/locale'
./~/moment/src/lib/locale/locales.js 65:16-60
./~/moment/src/lib/locale/locale.js
./~/moment/src/moment.js
./script.js

ال 23 كومينتر

+1 - نفس المشكلة مع Angular 4

كذلك هنا. عدم استخدام Angular أو React. هذا هو خطأ webpack الخاص بي:

WARNING in ./~/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/data/jenkins/workspace/project/node_modules/moment/src/lib/locale'
./~/moment/src/lib/locale/locales.js 65:16-60
./~/moment/src/lib/locale/locale.js
./~/moment/src/moment.js
./script.js

نفس المشكلة مع vuejs و webpack.

الشيء نفسه هنا مع حزمة الويب ، على الرغم من أن المشكلة يتم تشغيلها بواسطة المنطقة الزمنية اللحظية. قمنا بتغيير التبعية من "moment": "^2.18.1" إلى "moment": "~2.18.1"

نفس المشكلة عند الترقية إلى الإصدار 2.19.0
WARNING in ./~/[email protected]@moment/src/lib/locale/locales.js Module not found: Error: Can't resolve './locale' in '/Users/XXX/code/gitlab/web-editor/node_modules/[email protected]@moment/src/lib/locale' @ ./~/[email protected]@moment/src/lib/locale/locales.js 65:16-60 @ ./~/[email protected]@moment/src/lib/locale/locale.js @ ./~/[email protected]@moment/src/moment.js @ ./~/[email protected]@antd/lib/calendar/index.js @ ./~/[email protected]@antd/lib/index.js @ dll lib

نفس المشكلة هنا مع 2.19.0

نفس المشكلة على هذا الإصدار 2.19.0

هذا الإصدار (يجب إصلاح 2.19.0)
في الوقت الحالي ، قم بتثبيت 2.18.1
"اللحظة": "~ 2.18.1"

نفس المشكلة هنا 😢 سنقوم بالرجوع إلى الإصدار 2.18 حتى يتم حل هذه المشكلة.

نفس المشكلة هنا...

رد فعل خطأ webpack

WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in 'blahblahblah/node_modules/moment/src/lib/locale'
 @ ./node_modules/moment/src/lib/locale/locales.js 65:16-60
 @ ./node_modules/moment/src/lib/locale/locale.js
 @ ./node_modules/moment/src/moment.js
 @ ./src/client/components/ArticlesGrid/index.js
 @ ./src/client/containers/StuffPage/index.js
 @ ./src/client/routes.jsx
 @ ./src/client/index.js
 @ multi (webpack)-dev-server/client?http://0.0.0.0:8050 webpack/hot/dev-server babel-polyfill ./src/client/index.js

mymtw - كمجتمع ، لا نسمح بالشتائم على النماذج حتى يتم تحديث تعليقك. يرجى الامتناع في المستقبل.

حصلت على هذا بعد الترقية إلى 2.19 ...

node_modules/webpack/lib/IgnorePlugin.js:20
                    (!contextRegExp || contextRegExp.test(result.context))) {
                                                     ^

TypeError: contextRegExp.test is not a function

واستخدام البرنامج المساعد للتجاهل لتخطي اللغات على ملف تهيئة webpack الخاص بي:

new webpack.IgnorePlugin(/^\.\/locale$/, [/moment$/])

سيساعد قفل إصدار اللحظة في package.json :

"moment": "2.18.0"

ومع ذلك ، إذا تم سحب أحدث إصدار لحظة (2.19.0) من خلال التبعيات الخاصة بك ، فلن يعمل ما سبق (قم بتشغيل find ./node_modules/*/node_modules -iname moment للتحقق من الإصدارات الأخرى اللحظية في تطبيقك)

يمكنك بدلاً من ذلك استخدام حزم الويب الخارجية:

  • أضف لحظة إلى تكوين حزمة الويب الخارجية:
+            externals: {
+                moment: 'moment',
+            },
  • استخدم ملف moment.js من CDN - ضع هذا في ملف index.html (أو index.ejs):
    <script src="https://momentjs.com/downloads/moment.min.js"></script>

تم الرجوع إلى ~2.18.0 والذي يتحايل على هذا في الوقت الحالي.

هذه هي خطوة التكاثر التي تناسبني. أفترض أن لديك create-react-app مثبتًا عالميًا:

> create-react-app my-app
> cd my-app
> # Prove the app it working correctly
> npm run start 
> npm install moment

تحديث src/app.js بشيء مثل:

 import '.App.css';

+ import moment from 'moment'

class App extends Component {
 </p>
+<p>
+ Today is {moment().format()}
+</p>
 </div>

ثم

> npm run start 

توقع تحميل الموقع.

فعلي ، فشل مع وجود خطأ: لا يمكن حل خطأ "./locale".

سياق إضافي ، يعمل بعد العمل

> npm install [email protected] 

هذا مثير للاهتمام. لقد قمت للتو بتحديث لحظة على الكود الخاص بي الذي أعمل عليه في وظيفتي ، وبدأت حزمة الويب. بقدر ما أستطيع أن أقول إن لدي أحدث تبعيات webpack (هناك العديد منها ، وقد راجعت القليل منها فقط) ، واللحظة 2.19.0 ، وكل شيء على ما يرام.

سأحاول مسار إنشاء التطبيق التفاعلي التالي.

لم يكن هذا صباحًا سعيدًا جدًا بهذا الخطأ!

كما سبق في هذا الخطأ.

npm install --save [email protected]

هذا يحل المشكلة في الوقت الحاضر. كان 2.19.0 يعطيني نفس الخطأ منذ حوالي ساعتين.
تم الرجوع إلى الإصدار 2.18.1 وعمل بشكل جيد.

يمكننا أيضًا تأكيد هذا السيناريو.

كسر 2.19.0 بنية الإنتاج: (. يبدو أن العودة إلى 2.18.1 تعمل بشكل جيد.

إغلاق كنسخة مكررة من # 4216 - تتبع هناك.

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