【问题标题】:Jest: Couldn't find preset "@babel/env" relative to directory开玩笑:找不到相对于目录的预设“@babel/env”
【发布时间】:2019-05-31 14:52:29
【问题描述】:

我正在尝试在 ES6 项目中设置 Jest。没走多远,因为我一运行jest,就开始遇到问题。

.babelrc

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

上面运行 Jest 时会抛出 Couldn't find preset "@babel/env" relative to directory 错误。我猜这很好,因为无论哪种方式都应该是@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 替换全局包,但没有任何区别。

我可能在这里遗漏了什么?

【问题讨论】:

    标签: node.js jestjs babeljs


    【解决方案1】:

    啊,解决了。由于一些非常奇怪的原因,我不得不在我的本地设置中包含 'babel-core@^7.0.0-0',这是我在 babel-jest npmjs 页面上发现的(下面的屏幕截图):

    所以基本上,运行 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 包,无论是本地的还是全局的......

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 2020-07-21
      • 2018-04-08
      • 2019-08-15
      • 1970-01-01
      • 2019-06-04
      相关资源
      最近更新 更多