开玩笑:找不到相对于目录的预设“@babel/env”

Posted

技术标签:

【中文标题】开玩笑:找不到相对于目录的预设“@babel/env”【英文标题】:Jest: Couldn't find preset "@babel/env" relative to directory 【发布时间】: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 替换全局包,但没有任何区别。

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

【问题讨论】:

【参考方案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 包,无论是本地的还是全局的......

【讨论】:

以上是关于开玩笑:找不到相对于目录的预设“@babel/env”的主要内容,如果未能解决你的问题,请参考以下文章

React:找不到相对于目录“src”的预设“env react”

Webpack + Babel:找不到相对于目录的预设“es2015”

找不到相对于目录的预设“模块:metro-react-native-babel-preset”

错误:捆绑失败:错误:找不到相对于目录“C:\\Users\\...”的预设“module:metro-react-native-babel-preset”

开玩笑:在要测试的模块内找不到所需的模块(相对路径)

开玩笑找不到模块