【问题标题】:react-native start report: Error: UNKNOWN: unknown error, open ...\.babel.jsonreact-native 启动报告:Error: UNKNOWN: unknown error, open ...\.babel.json
【发布时间】:2017-05-10 14:27:17
【问题描述】:

我在 Windows 7 上有一个 RN 开发环境。它工作正常,直到昨天它在我运行“react-native”启动后突然报告错误。 错误信息:

[2016-12-26 09:58:17]         HMR Server listening on /hot

React packager ready.

fs.js:557
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: UNKNOWN: unknown error, open 'C:\Users\xitao\.babel.json'
    at Object.fs.openSync (fs.js:557:18)
    at Object.fs.writeFileSync (fs.js:1222:33)
    at save (C:\RN\LearnRN\node_modules\babel-register\lib\cache.js:45:16)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)
fs.js:557
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: UNKNOWN: unknown error, open 'C:\Users\xitao\.babel.json'
    at Object.fs.openSync (fs.js:557:18)
    at Object.fs.writeFileSync (fs.js:1222:33)
    at save (C:\RN\LearnRN\node_modules\babel-register\lib\cache.js:45:16)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)
fs.js:557
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: UNKNOWN: unknown error, open 'C:\Users\xitao\.babel.json'
    at Object.fs.openSync (fs.js:557:18)
    at Object.fs.writeFileSync (fs.js:1222:33)
    at save (C:\RN\LearnRN\node_modules\babel-register\lib\cache.js:45:16)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

我用谷歌搜索错误,没有运气。 我删除了.babel.json,错误仍然出现。 我重新启动了一个新项目,还是一样。我卸载了 node.js 和 python,然后按照 RN 主页上的“入门”再次安装它们,仍然一样。 我安装了react-native-cli 2.0.1和1.3.0,还是一样。

看起来即使出现错误,RN 项目也能正常工作。但你永远不知道错误何时会伤害我的项目。

【问题讨论】:

  • 您找到解决方案了吗?我也有同样的问题

标签: react-native react-native-android


【解决方案1】:

我也遇到了这个问题,并尽可能地对其进行了调试。错误是由某些竞争条件引起的:

  • 在构建过程中,babel-register 将缓存写入~/.babel.json,在每个滴答声中
  • 由于写入是同步的,因此在单个节点线程中不会出现竞争条件
  • 由于节点在设计上是单线程的,这一定是由于 Java 中的一些并行执行,触发了多个并行节点线程

我不知道为什么这不会发生在每个人身上,或者为什么这只是在使用 react native 一段时间后才会发生......

这需要在 React Native 中修复,可能与 babel-register 协调...我也会将此发布到 the related GitHub issue

【讨论】:

【解决方案2】:

尝试删除 .babel.json,生成一个新的并授予对该文件的读取权限。

您在 C:\Users\Me 中有一个无效的 babel.json 文件。修复它或 删除它。这不是由 React Native 创建的,也不需要 除非你想为每个项目设置一些全局 babel 设置 你的机器。

https://github.com/facebook/react-native/issues/11803

  1. 删除.babel.json
  2. react-native run-android(重新生成.babel.json)
  3. 在 Windows 资源管理器(不是 IE)中打开 C:\Users\yourUserName\
  4. 右键单击.babel.json > 属性
  5. 安全选项卡 > 高级 > 更改权限... > 添加...
  6. 输入要选择的对象名称,输入Everyone,点击确定
  7. 权限窗口,勾选“允许完全控制”,点击确定
  8. 点击确定
  9. react-native run-android(现在可以使用)

【讨论】:

    【解决方案3】:

    我的 node.js 的版本是 7.5.0。

    我昨天更新到7.10.0,问题解决了。

    【讨论】:

      【解决方案4】:

      这对我有用:

      react-native start --reset-cache

      【讨论】:

        【解决方案5】:

        在 git bush 中试试这一行

        chmod 777 .babel.json
        

        问题可能是这个文件是只读的。

        【讨论】:

        • 我照你说的做了。还是一样。
        • 我前几天遇到这个问题,通过这种方式解决了,很抱歉它对你不起作用。如果我找到正确的原因,我会提交给你。
        【解决方案6】:

        删除手机上旧版本的应用,然后试试这个:

        react-native start --reset-cache
        
        
        npx react-native run-android
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-09
          • 1970-01-01
          • 1970-01-01
          • 2019-09-07
          • 1970-01-01
          • 1970-01-01
          • 2020-08-26
          • 2018-07-03
          相关资源
          最近更新 更多