因此,我有一个依赖项程序包,正在将其拉入node_modules文件夹。此程序包具有这样的导出
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export * from './client';
为了解决这个问题,我使用了https://github.com/standard-things/esm。在我的节点加载器中
node -r esm index.js
。
但是,这不适用于我使用Jest的测试。
我似乎无法弄清楚如何让Jest为我转换这些导入。我已经尝试了很多事情,并且配置文件的当前状态是。
// babel.config.js
// babel.config.js
module.exports = {
presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-typescript'],
plugins: ['@babel/plugin-transform-modules-commonjs'],
};
const { pathsToModuleNameMapper } = require('ts-jest/utils');
const { compilerOptions } = require('./tsconfig');
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['<rootDir>/tests/**/*.{ts,js}'],
testPathIgnorePatterns: ['global.d.ts', 'utils.ts', '<rootDir>/node_modules/'], // tried with and without this
moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/' }),
};
仍然继续收到该错误。任何人都有建议。
答案 0 :(得分:2)
transformIgnorePatterns
默认为["/node_modules/"]
,这意味着默认情况下node_modules
运行时Jest
中的任何内容都不会转换。
如果您在node_modules
中有一个依赖项,需要在运行单元测试之前进行转换,那么您将需要在transformIgnorePatterns
配置中使用Jest
将其列入白名单:
"transformIgnorePatterns": [
"node_modules/(?!(module-that-needs-to-be-transformed)/)"
]