Moment Doesn't work With Jest
See original GitHub issueDescribe the bug
When imported into a development setting import moment from 'moment' allows moment to work effectively and does everything I want it to. However when running jest tests that run over the code that calls moment() I get the following error:
“TypeError: moment_1.default is not a function”
Strangely, Importing it in this way: import * as moment from 'moment' allows functionality in test but not in production. I have looked all through jest’s issues and this has been a reported issue however the Jest team is confident the issue is on moment’s side.
To Reproduce Steps to reproduce the behaviour:
- make a simple function in a react app which calls moment()
- add a jest test which will traverse this path.
- run the test.
- See error
Expected behaviour Moment should be callable in both test and production in the same way.
Desktop (please complete the following information):
- OS: macOS Mojave
- Testing: Jest -v 24.8.0
Moment-specific environment moment -v 2.24.0
- Other libraries in use: TypeScript
Please run the following code in your environment and include the output: console output when moment is imported the way development expects i.e. import moment from ‘moment’
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 output when moment is imported the way it functions in test i.e. import * as moment from ‘moment’
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
Issue Analytics
- State:
- Created 4 years ago
- Reactions:8
- Comments:14 (2 by maintainers)
Top Related StackOverflow Question
after some more searching found the solution here https://github.com/aurelia/skeleton-navigation/issues/606#issuecomment-397051406
need to pass in
"esModuleInterop": trueunder compilerOptions in tsconfig.jsonStill having this problem with
jest@28.1.0andmoment@2.29.2I didn’t want to change any source or test files so my solution was to add the following mock to setupFilesAfterEnv file: