<p>момент не имеет члена по умолчанию</p>

Созданный на 9 янв. 2018  ·  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 и я не могу получить перестановку, которая работает правильно. Одно решение позволит одной библиотеке работать с одним форматом импорта, но не работает с другим.

Есть причина, по которой существует спецификация, а именно для обеспечения согласованности. Разве у этого момента не может быть варианта moment-es или чего-то, что можно было бы правильно импортировать, чтобы люди, которые хотят следовать спецификации, могли просто следовать спецификации, позволяя инструментальной цепочке JS работать так, как ожидалось, а не всем? хаки?

+1

Была ли эта страница полезной?
0 / 5 - 0 рейтинги