React和babel中的可选链接运算符

问题描述 投票:0回答:2

在我的项目中我配置了babel:

{
  "presets": ["react", "es2015","stage-1", "transform-optional-chaining"],
  "plugins": ["transform-runtime"]
}

这是我在devDependenciespackage.json

"devDependencies": {
    "babel-cli": "^7.0.0-alpha.19",
    "babel-loader": "^7.1.5",
    "babel-plugin-module-resolver": "^3.1.1",
    "babel-plugin-transform-optional-chaining": "^7.0.0-beta.3",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-1": "^6.24.1",
    "copy-webpack-plugin": "^4.5.2",
    "css-loader": "^1.0.0",
    "file-loader": "^1.1.11",
    "html-webpack-plugin": "^3.2.0",
    "prettier": "^1.14.2",
    "react-hot-loader": "^4.3.4",
    "style-loader": "^0.22.1",
    "url-loader": "^1.1.1",
    "webpack": "^4.16.5",
    "webpack-cli": "^3.1.0",
    "webpack-dev-server": "^3.1.5"
  }

当我运行该项目时,我收到此错误:

找不到模块'babel-preset-transform-optional-chaining'

任何人都可以解释如何解决此错误?

reactjs babeljs babel
2个回答
3
投票

transform-optional-chaining是一个插件(不是预设)。尝试将您的babel配置更改为:

{
  "presets": ["react", "es2015","stage-1"],
  "plugins": ["transform-runtime", "transform-optional-chaining"]
}

0
投票

似乎更大的问题是你有各种版本的babel,所有这些都已经过时了。 “transform-optional-chaining”已包含在babel 7的“stage-1”预设中,但是was not back-ported to babel 6

然而,更令人困惑的是:babel has done away with stage-presets(和Babel 6中的es201x预设被弃用)。因此,在最新版本的babel中,您不仅需要列出“transform-optional-chaining”,还需要列出您正在使用的所有其他插件。

我认为这里唯一真正的选择(如果你想使用最新的插件)是升级到Babel 7的最新版本 - 其中包括很多变化,但无论如何你最终都必须这样做。你可以找到一个migration guide here

我想你可以在删除阶段预设之前找到一个alpha版本但是这只是给自己更多的工作以便将来,并且无论如何都可能仍然会有变化。

© www.soinside.com 2019 - 2024. All rights reserved.