<p>اللحظة ليس لها عضو افتراضي</p>

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

وصف المشكلة وخطوات إعادة الإنتاج:
محاولة تنفيذ لغة المثيل في مشروع مطبوع
https://momentjs.com/docs/#/i18n/instance -locale /
لكن عندما أحصل على خطأ عند import moment from 'moment' :
moment has no default export

غرض:
أحتاج إلى نماذج مخصصة (اختصار ، مثل "ثانية" بدلاً من "ثوانٍ") من السلاسل المتوافقة مع البشر في بعض أجزاء التطبيق ، لذلك أود استخدام لغتين محليتين في عرض واحد.

بيئة:
مشروع مطبوع

معلومات أخرى قد تكون مفيدة:
TypeScript ، Angular4

إذا كنت تبلغ عن مشكلة ، فالرجاء تشغيل الكود التالي في البيئة التي تستخدمها وتضمين الإخراج:

console.log( (new Date()).toString())
console.log((new Date()).toLocaleString())
console.log( (new Date()).getTimezoneOffset())
console.log( navigator.userAgent)
console.log(moment.version)
Tue Jan 09 2018 15:46:46 GMT+0100 (CET)
VM12667:2 09/01/2018, 15:46:46
VM12667:3 -60
VM12667:4 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
VM12667:5 Uncaught ReferenceError: moment is not defined
    at <anonymous>:5:13



md5-1f8dcc13f1f8244065e29a6dcf5a9efa



import * as moment from 'moment';
console.log('version', moment.version);



md5-1f8dcc13f1f8244065e29a6dcf5a9efa



version 2.20.1

أرغب في منع الحل import * as moment from 'moment'; لأنه يمنع ثلاثة اهتزازات في التجميع

تشكرات! :)

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

RTFM 😂

Note: If you have trouble importing moment, try adding 
"allowSyntheticDefaultImports": true in compilerOptions 
in your tsconfig.json file and then use the syntax

https://momentjs.com/docs/#/use -it / typescript /

ال 4 كومينتر

RTFM 😂

Note: If you have trouble importing moment, try adding 
"allowSyntheticDefaultImports": true in compilerOptions 
in your tsconfig.json file and then use the syntax

https://momentjs.com/docs/#/use -it / typescript /

هل هناك فرصة لحل هذا بطريقة لم يعد فيها allowSyntheticDefaultImport مطلوبًا؟ تكمن المشكلة في طلبها في أنها تتطلب من كل شخص يستخدم اللحظة أن يكون لديه هذا الإعداد أيضًا.

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

فقط أدق هنا أن هذه مشكلة بغيضة حقًا. منذ أن اختارت اللحظة عدم احترام المواصفات الرسمية ، فهذا يعني أن بعض المكتبات تسحب عبر import * as moment from "moment" بينما تعمل المكتبات الأخرى عبر import defaultMoment from "moment" . لذلك ، عندما يحاول مشروعي تحميل كليهما ، لا يمكنني الحصول على الإعدادات الصحيحة للحصول على مجموعة التحديثات لتجميعها بشكل صحيح. لقد جربت تقريبًا كل تبديل ومجموعة من allowSyntheticDefaultImports : true و esModuleInterop : true و moduleResolution : "node" و skipLibCheck : true ولا يمكنني الحصول على تبديل يعمل بشكل صحيح. سيسمح أحد الحلول لمكتبة واحدة ذات تنسيق استيراد واحد بالعمل ، لكنها تفشل في الأخرى.

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

+1

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