我正在尝试在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
替换全局软件包,但这没什么区别。
我在这里可能会想念什么?
答案 0 :(得分:2)
啊,解决了。由于某些非常奇怪的原因,我不得不在本地设置中加入'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软件包,无论是本地的还是全局的...