Опишите ошибку
При импортировании в настройку разработки import moment from 'moment'
позволяет моменту работать эффективно и делать все, что я хочу. Однако при запуске тестов jest, которые запускают код, вызывающий момент (), я получаю следующую ошибку:
«TypeError: moment_1.default не является функцией»
Как ни странно, импорт таким образом: import * as moment from 'moment'
разрешает функциональность в тестовой, но не в рабочей среде. Я просмотрел все проблемы Jest, и об этом сообщалось, однако команда Jest уверена, что проблема актуальна.
Воспроизводить
Шаги по воспроизведению поведения:
Ожидаемое поведение
Момент должен вызываться как в тестовой, так и в производственной среде одинаково.
Рабочий стол (заполните следующую информацию):
Специфическая среда
момент -v 2.24.0
Пожалуйста, запустите следующий код в своей среде и включите вывод:
вывод на консоль, когда момент импортируется так, как ожидает разработка, т.е. импортный момент из момента
console.log src/resources/timestamping.tsx:4
Tue Jul 16 2019 10:58:16 GMT-0400 (Eastern Daylight Time)
console.log src/resources/timestamping.tsx:5
7/16/2019, 10:58:16 AM
console.log src/resources/timestamping.tsx:6
240
TypeError: Cannot read property 'version' of undefined.
вывод в консоль при импорте момента, как он работает в тесте, т.е. импорт * как момент с момента
console.log src/resources/timestamping.tsx:4
Tue Jul 16 2019 11:02:46 GMT-0400 (Eastern Daylight Time)
console.log src/resources/timestamping.tsx:5
7/16/2019, 11:02:46 AM
console.log src/resources/timestamping.tsx:6
240
console.log src/resources/timestamping.tsx:8
2.24.0
const moment = require("moment").default || require("moment")
- это то, что я придумал, но он позволяет использовать только moment
как функцию.
// редактировать
import * as mom from "moment";
const moment = require("moment").default || require("moment");
Исправляет угловую / шутливую проблему. Но это все же взлом.
порок. Но это все же взлом.
Спасибо, сэр, это помогло.
Может ли здесь что-нибудь сделать Moment.js?
Я столкнулся с этой проблемой, когда использовал ts-jest
для работы с машинописным текстом и jest. В итоге я использовал babel для поддержки машинописного текста с помощью jest, и я больше с этим не сталкиваюсь. Возможно, библиотека ts-jest
может что-то делать под капотом
после еще нескольких поисков нашел решение здесь
https://github.com/aurelia/skeleton-navigation/issues/606#issuecomment -397051406
нужно передать "esModuleInterop": true
под compilerOptions в tsconfig.json
@DhrubajitPC рад, что вы нашли решение.
Вы можете добавить это в нашу документацию?
https://momentjs.com/docs/#/use -it / typescript /
Конечно ... дай мне немного времени :)
хммм ... вроде уже есть часть FAQ
https://github.com/moment/moment/blob/develop/FAQ.md
Кажется, я получаю эту ошибку только тогда, когда устанавливаю для esModuleInterop значение true ...
@KonradLinkowski - хак хоть и помог :)
Самый полезный комментарий
const moment = require("moment").default || require("moment")
- это то, что я придумал, но он позволяет использовать толькоmoment
как функцию.// редактировать
Исправляет угловую / шутливую проблему. Но это все же взлом.