Jest не удается импортировать пакет, в то время как остальная часть моего кода typescript импортирует его

#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 сделали это.