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

时间:2019-01-05 04:36:21

标签: node.js jestjs babel

我正在尝试在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 个答案:

答案 0 :(得分:2)

啊,解决了。由于某些非常奇怪的原因,我不得不在本地设置中加入'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软件包,无论是本地的还是全局的...