【问题标题】:Migrating to react native 0.49迁移到 react native 0.49
【发布时间】:2017-10-09 08:31:44
【问题描述】:

最近我尝试将 React Native 版本从 0.48.4 更新到 0.49.0。我已阅读 documentation 关于重大更改的内容。我安装了 react-native v0.49.0。当我尝试运行时,我遇到了这样的错误

node_modules\react-native\local-cli\util\findSymlinkedModules.js:37
ignoredRoots? = [])
            ^
SyntaxError: Unexpected token ?
    at createScript (vm.js:53:10)
    at Object.runInThisContext (vm.js:95:10)
    at Module._compile (module.js:543:28)
    at loader (\node_modules\babel-register\lib\node.js:144:5)
    at Object.require.extensions.(anonymous function) [as .js] (node_modules\babel-register\lib\node.js:154:7)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)

我尝试使用react-native-git-upgradereact-native upgrade 进行升级。但是出现了诸如不被识别为内部或外部命令之类的错误。

我在 RN 0.49.0 的新功能和增强功能更改日志中发现了一项更改,如下所示

Refactor how symlinks are discovered in local-cli, support scoped modules.

这有什么关系

【问题讨论】:

  • 这是完整的错误信息吗?
  • 是的。是@VahidBoreiri
  • 您的react-native-git-upgrade 是最新版本吗?
  • 是。最近安装

标签: android react-native version


【解决方案1】:

如果您使用的是 git repo,请尝试删除项目文件夹,然后重新克隆 repo。这适用于遇到同样问题的朋友。

我在这里找到了这个解决方案: https://github.com/facebook/react-native/issues/16458

【讨论】:

    【解决方案2】:

    为了解决这个问题,我不得不使用babel-plugin-transform-flow-strip-types 插件。

    步骤:

    npm install --save-dev babel-plugin-transform-flow-strip-types
    

    .babelrc

    {
      "plugins": ["transform-flow-strip-types"]
    }
    

    更多详情https://www.npmjs.com/package/babel-plugin-transform-flow-strip-types

    【讨论】:

      【解决方案3】:

      升级到"react-native": "0.54.1", 为我解决了这个问题。

      【讨论】:

        【解决方案4】:

        更新到 0.54 时遇到同样的问题。

        这里的根本原因是 Node 试图解释带有 Flow 类型的 JS 代码(在本例中为 ignoredRoots?)。

        按照 Dinesh 的建议,通常 Babel 会通过 babel-plugin-transform-flow-strip-types 删除这些类型。但是这个转换包含在标准的 react-native Babel 预设中,它也做了很多其他的事情。

        因此,您真正需要做的是确保您拥有该预设设置。它应该在package.json 中的devDependency 下:

        "devDependencies": {
          "babel-preset-react-native": "^4.0.0",
        

        然后在.babelrc中配置:

        {
          "presets": ["react-native"]
        }
        

        设置完成后,您可能仍需要重置打包程序缓存:

        npm start -- --reset-cache
        

        这就是为我做的,希望它有所帮助。

        【讨论】:

          【解决方案5】:

          findSymlinkedModules.js 第 37 行删除 ? 对我有用

          【讨论】:

            猜你喜欢
            • 2019-11-05
            • 1970-01-01
            • 2019-03-25
            • 1970-01-01
            • 2022-01-12
            • 2018-11-24
            • 2020-03-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多