React-Native:无法将 babel 更新到 ES7

Posted

技术标签:

【中文标题】React-Native:无法将 babel 更新到 ES7【英文标题】:React-Native: Cannot update babel to ES7 【发布时间】:2017-01-14 19:49:48 【问题描述】:

我正在尝试使用新的 ES7 功能 async/await,但据我在 react-native node_modules 中看到的,我没有它们。

我有 react-native 版本 0.31,我刚刚将它更新到 0.32,我可以看到 babel 仍然没有更新 ES7 功能,所以我不能使用 async/await。你知道我怎样才能让它发挥作用吗?

【问题讨论】:

您是否尝试过使用异步代码运行您的应用程序? React native 使用 babel-preset-react-native,其中也包含异步插件。我也在我的应用中使用异步。 是的,然后我收到一个带有意外令牌消息的控制台错误。 async/await 不是 ES7 的特性。它将于明年作为 ES2017 的一部分发布。 【参考方案1】:

你需要安装几个 babel 插件,然后你可以使用 ES7 装饰器并将其保存在 devDependencies 中:

1- babel-plugin-transform-decorators-legacy

npm i babel-plugin-transform-decorators-legacy --save-dev

2- babel-preset-react-native-stage-0

npm i babel-preset-react-native-stage-0 --save-dev

如果不存在,最后在根项目文件夹文件中创建 .babelrc 并添加以下行:


 'presets': ['react-native'],
 'plugins': ['transform-decorators-legacy']

【讨论】:

【参考方案2】:

默认情况下,Babel 不附带 async/await。要使用它们,请安装此插件:

npm install babel-plugin-syntax-async-functions

并在您的 .babelrc 文件中像这样使用它:


  "plugins": ["syntax-async-functions"]

参考:https://babeljs.io/docs/plugins/syntax-async-functions/

【讨论】:

现在它确实在 react-native 模块中带有 babel。 那你能改写你的问题吗?问题是你没有安装 babel? 我的错,希望现在更好。 我有 20 个 .babelrc 文件,我不确定哪个是好文件... 你怎么有20个?您的项目的根目录中应该只有一个。如果它不存在,您可以创建它

以上是关于React-Native:无法将 babel 更新到 ES7的主要内容,如果未能解决你的问题,请参考以下文章

React-native,monorepo:无法解析模块@babel/runtime/helpers/interopRequireDefault

Jest 遇到了带有 react-native 的意外令牌

如何在 react-native 0.57+ 上为 react-relay(经典)配置 babel

无法更新状态 - react-native

React-Native 应用程序中来自 Babel 的未知选项错误

谁捆绑了 react-native 代码?