【问题标题】:Configure a Create-React-Native-App project to use MobX and use Babel to enable decorators配置 Create-React-Native-App 项目以使用 MobX 并使用 Babel 启用装饰器
【发布时间】:2017-10-06 14:13:56
【问题描述】:

我使用 CRNA 创建了一个项目,经过一些考虑,我决定使用 MobX 进行状态管理。 MobX 最适合使用装饰器语法(大多数 MobX 文档都是使用装饰器语法编写的),所以我想安装 Babel 插件以使用装饰器。

我已成功安装 MobX (yarn add mobx mobx-react),但在安装 Babel 插件以启用装饰器后(npm install --save-dev babel-plugin-transform-decorators 并将 "transform-decorators" 添加到 .babelrc 的插件部分,yarn start 停止工作并抛出错误关于未找到 react-native-scripts。

然后我运行了yarn install,这一次它抛出了一个错误提示

Error starting packager: TypeError: Invalid Version: undefined
    at new SemVer (D:\Projects\ReactNativePlayground\omar\MRKT\node_modules\semver\semver.js:279:11)
    at Function.major (D:\Projects\ReactNativePlayground\omar\MRKT\node_modules\semver\semver.js:551:10)
    at D:\xdl\src\project\Doctor.js:634:18
    at D:\Projects\ReactNativePlayground\omar\MRKT\node_modules\lodash\lodash.js:4944:15
    at baseForOwn (D:\Projects\ReactNativePlayground\omar\MRKT\node_modules\lodash\lodash.js:3001:24)
    at D:\Projects\ReactNativePlayground\omar\MRKT\node_modules\lodash\lodash.js:4913:18
    at Function.forEach (D:\Projects\ReactNativePlayground\omar\MRKT\node_modules\lodash\lodash.js:9359:14)
    at D:\xdl\src\project\Doctor.js:624:9
    at Generator.throw (<anonymous>)
    at step (D:\Projects\ReactNativePlayground\omar\MRKT\node_modules\xdl\build\project\Doctor.js:615:191)
error Command failed with exit code 1.

有人对 CRNA 和 MobX 有经验吗?非常感谢任何帮助!

【问题讨论】:

    标签: react-native babeljs mobx


    【解决方案1】:

    我已经解决了。事实证明,运行npm install --save-dev babel-plugin-transform-decorators 破坏了一些东西。我应该运行的是yarn add --dev babel-plugin-transform-decorators-legacy 并将"transform-decorators-legacy" 添加到.babelrc 插件部分。完成这些步骤后,我运行了yarn install,它修复了我的项目。

    此外,我的编辑器 (VSCode) 发出了关于扩展是实验性的警告,因此我在根文件夹中添加了一个 jsconfig.json 文件并在其中添加了以下内容:

    {
      "compilerOptions": {
         "experimentalDecorators": true
      },
      "exclude": [".expo/*", "node_modules/*"]
    }
    

    【讨论】:

    • 是的。在我的具体情况下,使用 yarn 而不是 npm 解决了我的问题。
    猜你喜欢
    • 2017-01-08
    • 1970-01-01
    • 2019-03-09
    • 2018-07-06
    • 2019-03-16
    • 1970-01-01
    • 2019-01-23
    • 2019-05-10
    • 2018-10-27
    相关资源
    最近更新 更多