react-native start report: Error: UNKNOWN: unknown error, open ...\.babel.json

react-native start report: Error: UNKNOWN: unknown error, open ...\.babel.json

我在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)

我google错误,运气不好。 我删除了 .babel.json,错误仍然出现。 我重新启动一个新项目,还是一样。我卸载了node.js和python,然后按照RN主页上的"Getting Started"重新安装,还是一样。 我安装了react-native-cli 2.0.1和1.3.0,还是一样

看起来 RN 项目即使有错误也能正常工作。但是你永远不知道错误什么时候会伤害我的项目。

在 git 灌木丛中试试这条线

chmod 777 .babel.json

问题可能在于此文件是 read-only。

我也 运行 参与其中,并尽我所能调试它。该错误是由某些竞争条件引起的:

  • 在构建期间,babel-register 将缓存写入 ~/.babel.json,每个 tick
  • 由于写入是同步的,竞争条件不会在单个节点线程内出现
  • 由于节点是 single-threaded 设计的,这必须考虑到 Java 中的某些并行执行,触发多个并行节点线程

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

这需要在 React Native 中修复,可能与 babel-register 协调...我也会 post 将其纳入 the related GitHub issue

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

You have a babel.json file at C:\Users\Me that is invalid. Fix that or remove that. This was not created by React Native and is not needed unless you want to set some global babel settings for every project on your machine.

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

  1. 删除。babel.json
  2. react-native 运行-android(重新生成.babel.json)
  3. 在 Windows 资源管理器(非 IE)
  4. 中打开 C:\Users\yourUserName\
  5. 右键单击 .babel.json > 属性
  6. 安全选项卡 > 高级 > 更改权限...> 添加...
  7. 输入对象名称select,输入Everyone,点击确定
  8. 权限window,勾选"Allow Full Control",点击确定
  9. 点击确定
  10. react-native 运行-android(现在有效)

我的 node.js 版本是 7.5.0。

昨天更新到7.10.0,问题解决

这对我有用:

react-native start --reset-cache

删除您 phone 上的旧版应用,然后试试这个:

react-native start --reset-cache


npx react-native run-android