水箭龟 我尝试通过 --experimental-vm-modules
node 环境变量参数的方式解决,需要修改 package.json 的代码,如下:
{
...
"scripts": {
...
"test": "cross-env NODE_OPTIONS='--experimental-vm-modules' jest",
...
},
...
"jest": {
...
"transform": {
"^.+\\.(js|jsx)$": "babel-jest",
"^.+\\.(ts|tsx)?$": "babel-jest"
},
...
},
...
}
}
这样虽然 chalk 等 node_models 中的 ESM 导入在运行 jest 时都没有问题,但又会引起其他地方出现代码包导入或代码解析一类的问题。
所以建议还是将 chalk 一类的包降到没有支持 ESM 的版本,或者按照 jest 官方 mock ESM 的办法处理。
参考 issue 讨论 https://github.com/jestjs/jest/issues/12119#issuecomment-986303289