Moment: لم يتم العثور على الوحدة النمطية: خطأ: لا يمكن حل "../moment" باستخدام Webpack و TypeScript

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

صف الخلل

إذا حاولت تجميع تطبيق TypeScript الخاص بي باستخدام حزمة الويب ، فسأحصل على خطأ لكل لغة لا يمكن حل "../moment".

يتكرر هذا الخطأ لكل لغة أخرى:

ERROR in ./node_modules/moment/locale/km.js
Module not found: Error: Can't resolve '../moment' in 'C:\PROGS\dev\var\private\moment-test\node_modules\moment\locale'
 @ ./node_modules/moment/locale/km.js 5:50-70
 @ ./node_modules/moment/locale sync ^\.\/.*$
 @ ./node_modules/moment/moment.js
 @ ./src/app.ts

لإعادة إنتاج

src / app.ts

import * as moment from "moment";
console.log(moment().format("YYYY"));

package.json

{
    "private": true,
    "dependencies": {
        "moment": "2.23.0"
    },
    "devDependencies": {
        "awesome-typescript-loader": "5.2.1",
        "typescript": "3.2.2",
        "webpack": "4.28.3",
        "webpack-cli": "3.2.1"
    }
}

tsconfig.json

{ "include": [ "./src/" ] }

webpack.config.js

module.exports = {
    entry: "./src/app.ts",
    output: { filename: "bundle.js" },
    resolve: { extensions: [".ts"] },
    module: { rules: [ { test: /\.ts$/, use: { loader: "awesome-typescript-loader" } } ] }
}

سلوك متوقع

يجب أن يعمل yarn run webpack -p بدون أي خطأ.

بيئة خاصة باللحظة

  • نظام التشغيل Windows 10
  • العقدة 10.15.0
  • لحظة 2.23.0
  • TypeScript 3.2.2
  • Webpack 4.28.3
  • المنطقة الزمنية: CET (UTC + 1)

الرجاء تشغيل الكود التالي في بيئتك وتضمين الإخراج:

console.log((new Date()).toString())
console.log((new Date()).toLocaleString())
console.log((new Date()).getTimezoneOffset())
console.log(navigator.userAgent)
console.log(moment.version)

هذا الرمز فشل مع نفس الأخطاء!

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

كنت أواجه نفس المشكلة ، وهنا كانت المشكلة-

  • لقد قمت بتثبيته باستخدام الأمر المخصص npm i --save react-moment ، والذي تمت إضافته للتو في ملف package.json لكن lib لم يكن موجودًا في node_modules ، لذلك أقوم بتنفيذ ذلك
  • npm install --save moment react-moment
  • وهي الآن تعمل بالشكل المتوقع.

ال 9 كومينتر

شكرا لفتح هذا الطلب.
هذا سؤال رائع لـ Stack Overflow .

هذه حشرة ، أليس كذلك؟ يعد Stack Overflow جيدًا للسؤال ، ولكن لن يقوم أحد بإصلاح الأخطاء هناك.

أفسر إجابتك على أنها تعني أنك لا تدعم WebPack مع TypeScript. مؤسف جدا!

هناك العديد من البرامج التعليمية على الإنترنت حول استخدام Moment مع Webpack و TypeScript. يبدو أن كثيرين آخرين يستخدمونها معًا على ما يرام. إذا واجه المزيد من الأشخاص هذه المشكلة ، وكانت هناك معرفة مجتمعية كافية لإصلاحها ، فيمكننا محاولة القيام بذلك.

بالمناسبة ، عانيت من نفس المشكلة - ويبدو أن سببها هو المواقع اللحظية ، التي لم أهتم بها. لقد وجدت حلاً في هذه المقالة عبر الإنترنت ، والذي كان جيدًا بما يكفي في حالتي ، لتجاهل المكون الإضافي للغة:

المكونات الإضافية: [حزمة الويب الجديدة. تجاهل بلوجين (/ ^.\/ locale $ /، / moment $ /)]

يبدو هذا وكأنه سيناريو استخدام سائد جدًا ، لذلك أوصي بالربط بالصفحة أعلاه من قسم TypeScript في المستندات .

@ authguidance -ampless العلاقات العامة مرحب بهم على https://github.com/moment/momentjs.com !

كنت أواجه نفس المشكلة ، وهنا كانت المشكلة-

  • لقد قمت بتثبيته باستخدام الأمر المخصص npm i --save react-moment ، والذي تمت إضافته للتو في ملف package.json لكن lib لم يكن موجودًا في node_modules ، لذلك أقوم بتنفيذ ذلك
  • npm install --save moment react-moment
  • وهي الآن تعمل بالشكل المتوقع.

يعرف أي شخص لماذا دائما تظهر مثل "قبل بضع ثوان"؟ مهما كان التاريخ

أضفت اللحظة في رد فعل: استيراد * كلحظة من "لحظة" ؛ وفي حقنة الاعتماد المضافة: "لحظة": "2.23.0" ، ولكن الحصول على

خطأ غير محدد ... في التفاعلات ،
رجاء، المساعده...

لماذا لم يتم إغلاق هذا الفرع؟ آخر تعليق في 2 ديسمبر 2019.marwahaha

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