Jest: 在目录中无法找到 "@babel/env" 预设

3

我正在尝试在一个ES6项目中设置Jest。但是由于一旦我运行jest就遇到了问题,所以没有取得什么进展。

.babelrc

{
  "presets": [
    "@babel/env"
  ]
}

上述代码在运行Jest时会抛出一个错误,内容为“在目录中找不到预设'@babel/env'”。不过这应该没关系,因为无论如何都应该是@babel/preset-env? (使用我的其他设置两个都有效...) 但是!当我将预设更改为@babel/preset-env时,我收到的错误非常令人困惑: 需要Babel "^7.0.0-0",但加载的是"6.26.3"。如果您确定已经安装了兼容版本的@babel/core,则很可能是构建过程中加载了错误的版本。检查此错误的堆栈跟踪以查找第一个不提及"@babel/core"或"babel-core"的条目,以查看谁在调用Babel。(处理预设时:“/Users/.../node_modules/@babel/preset-env/lib/index.js”) 这非常奇怪,因为我的Babel和Jest的devDeps设置为:
"devDependencies": {
  "@babel/core": "^7.2.0",
  "@babel/preset-env": "^7.2.0",
  "@babel/register": "^7.0.0",
  "babel-jest": "^23.6.0"
}

据我所知,那个错误信息根本没有任何意义。我的下一个想法是检查全局Babel CLI安装,它是babel-cli@6.26.0。更接近了,但它不是错误信息中所述的6.26.3。我还尝试用最新的@babel/cli替换全局包,但没有任何区别。我可能错过了什么?
1个回答

3
啊,问题解决了。出于某种非常奇怪的原因,我必须在本地设置中包含'babel-core@^7.0.0-0',我在babel-jest npmjs页面上发现了这一点(如下图所示):

2]

因此,运行npm i -D 'babel-core@^7.0.0-0'解决了我的问题,使我的devDeps变成了这样:

"devDependencies": {
  "@babel/core": "^7.2.2",
  "@babel/preset-env": "^7.2.0",
  "@babel/register": "^7.0.0",
  "babel-core": "^7.0.0-bridge.0",
  "babel-jest": "^23.6.0",
}

对我来说,同时包含@babel/corebabel-core似乎有点疯狂,但是嘿,它起作用了!至于6.26.3的错误消息,我猜它仍然是个谜,因为我无法在该版本中找到任何Babel包,无论是本地还是全局...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接