开玩笑:找不到相对于目录的预设“@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/core
和babel-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”