升级query-string至8.1后Next.js 13的test:ci执行失败求助
解决方案
1. 修改Jest配置中的transformIgnorePatterns
将原有配置调整为不排除query-string包,允许Jest对其进行转译:
module.exports = { // ... 其他配置保持不变 transformIgnorePatterns: [ 'node_modules/(?!query-string)', // 不对query-string忽略转译 '^.+\\.module\\.(css|sass|scss)$', ], };
2. 确认代码导入方式
你已将导入语句调整为:
import queryString from 'query-string'; // 使用方式 queryString.stringifyUrl({ url })
这与query-string v8的导出规范匹配,无需额外修改。
问题原因
query-string从v8版本起切换为纯ESM模块,而Jest默认会跳过node_modules目录下的文件转译。当Jest执行该包内代码时,遇到ESM的import语句就会触发语法错误。通过修改transformIgnorePatterns,让Jest对query-string执行转译,babel-jest会将其转换为Jest兼容的CommonJS格式,从而解决报错问题。
内容的提问来源于stack exchange,提问作者aahhuhuhu
相关产品推荐
相关产品推荐

