【问题标题】:Optional Chaining Operator in React and babelReact 和 babel 中的可选链接运算符
【发布时间】:2018-09-01 15:56:07
【问题描述】:

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

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

这是我在package.json中的devDependencies

"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


    【解决方案1】:

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

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

    【讨论】:

    • 另请注意:alpha/beta 版本 shouldn't have ^ at the beginning(至少对于 babel),因为这意味着重大更改将自动更新(如果您有锁定文件,可能不会发生,但您仍应删除它们)。除此之外:stage presets have been removed 在最新版本的 babel 7 中。
    • 综上所述:我相信“transform-optional-chaining”是 stage-1 包的一部分,所以在你更新 Babel 7 之前,你应该不需要这个?
    • 谢谢。此错误已修复,但我收到另一个错误!现在我收到此错误:无法读取未定义的“松散”属性。
    【解决方案2】:

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

    但是,让事情变得更加混乱:babel has done away with stage-presets(并且 es201x 预设在 Babel 6 中已弃用)。因此,在最新版本的 babel 中,您不仅确实需要列出“transform-optional-chaining”,而且还需要列出您正在使用的所有其他插件。

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-15
      • 2021-10-10
      • 1970-01-01
      • 2021-01-02
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      相关资源
      最近更新 更多