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

IT技术 reactjs babeljs
2022-07-13 00:29:01

在我的项目中,我配置了 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"
  }

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

找不到module'babel-preset-transform-optional-chaining'

谁能解释如何解决这个错误?

2个回答

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

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

似乎更大的问题是你有不同版本的 babel,所有这些都已经过时了。"transform-optional-chaining" 已经包含在 babel 7 的 "stage-1" 预设中,但没有向后移植到 babel 6

然而,更令人困惑的是:babel 已经取消了舞台预设(并且 es201x 预设在 Babel 6 中已被弃用)。因此,在最新版本的 babel 中,您不仅需要列出“transform-optional-chaining”,还需要列出您正在使用的所有其他插件。

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

我想你可以在移除舞台预设之前找到一个 alpha 版本,但这只是给你自己的未来做更多的工作,而且很可能仍然需要做出改变。