#typescript #webpack #jestjs #babeljs
#typescript #webpack #jestjs #babeljs
Вопрос:
Внутри тестового файла Jest, если я это сделаю:
import _ from 'lodash';
Затем _
получает значение undefined
.
Если, OTOH, я делаю:
import * as _ from 'lodash';
Затем _
вычисляется просто отлично.
Мой вопрос в том, как это возможно, учитывая, что в других частях моей кодовой базы Typescript я работаю import _ from lodash
без каких-либо проблем. Я работаю в предположении, что Jest использует то же tsconfig.js
самое, что и babel.config.js
мой пакет, так почему я получаю этот другой результат?
У меня очень простая jest.config.js
конфигурация, полученная отсюда:
module.exports = {
"roots": [
"<rootDir>/src"
],
"testMatch": [
"**/__tests__/**/*. (ts|tsx|js)",
"**/?(*.) (spec|test). (ts|tsx|js)"
],
"transform": {
"^. \.(ts|tsx)$": "ts-jest"
},
}
Вот мой babel.config.js
:
module.exports = {
"presets": ["@babel/preset-env", "@babel/react"],
"compact" : false,
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
И, наконец tsconfig.json
, мой:
{
"compilerOptions": {
"strict": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist/",
"sourceMap": true,
"module": "es6",
"target": "es5",
"jsx": "react",
"allowJs": true,
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/typings/*",
"node_modules/@siedlerchr/types-ol-ext/@types/*"
]
},
"resolveJsonModule": true
}
}
Комментарии:
1. staging-typescript.org/tsconfig#esModuleInterop несет за это ответственность.
2. @EstusFlask действительно, настройка
esModuleInterop
и очистка кэша Jest сделали это.