配置transformIgnorePatterns后出现Cannot read property 'pdfMake' of underfined错误
问题根因
你配置transformIgnorePatterns时错误放开了对pdfmake相关包的转译限制:pdfmake本身是CommonJS规范的包,经过Babel转译后原本的module.exports导出会被封装为ES模块的default属性,原有直接挂载在导出对象上的pdfMake属性无法被直接读取,就会触发undefined报错。
解决方案
- 修正
transformIgnorePatterns配置,仅放开需要转译的、出现Unexpected token default错误的特定ESModule包,其余node_modules包保持默认忽略转译的规则,示例配置如下:
// jest.config.js 示例 module.exports = { // 其他原有配置保持不变 transformIgnorePatterns: [ // 替换括号内的xxx为你实际需要转译的node_modules包名,多个用|分隔 "/node_modules/(?!(xxx)/)" ] }
- 调整Babel配置,强制所有转译后的模块统一用CommonJS规范导出,避免两种模块规范混用导致的导出丢失问题:
// .babelrc 或 babel.config.json 示例 { "presets": [ ["@babel/preset-env", { "targets": { "node": "current" }, "modules": "commonjs" }] ] }
- 若上述配置修改后仍有问题,可以调整
pdfmake的引入写法兼容两种导出格式:
// 替换原有import/require写法 const pdfMake = require('pdfmake').default || require('pdfmake')
- 配置修改完成后可以执行
npx jest --debug查看最终生效的transformIgnorePatterns规则,确认配置没有被上层框架默认规则覆盖。
内容的提问来源于stack exchange,提问作者Bhupinder Singh
相关产品推荐
相关产品推荐

