【问题标题】:react-native start EACCESS error for setup_env.shsetup_env.sh 的 react-native 启动 EACCESS 错误
【发布时间】:2017-05-11 18:47:47
【问题描述】:

所以,我在 ReactNative 中获得了我的第一个项目,可以在 Windows 上运行 Android 操作系统。在 Mac 上进行了结帐,以相同的方式对其进行了配置,当我尝试使用 react-native start 启动反应包管理器时,出现以下错误:

child_process.js:506
    throw err;
    ^
Error: spawnSync /Users/UserName/Desktop/Path/node_modules/react-native/local-cli/setup_env.sh EACCES
    at exports._errnoException (util.js:1022:11)
    at spawnSync (child_process.js:461:20)
    at Object.execFileSync (child_process.js:498:13)
    at Object.run (/Users/UserName/Desktop/Path/node_modules/react-native/local-cli/cliEntry.js:156:16)
    at Object.<anonymous> (/usr/local/lib/node_modules/react-native-cli/index.js:117:7)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

我知道它只尝试将 ulimit(打开文件限制)设置为 2048,这对于非 root 用户是允许的。还尝试使用 sudo 运行该命令,为其赋予 root 权限。 在机器上运行ulimit -a 显示打开文件限制为 256,我尝试将默认 2048 更改为此。尝试将其增加到 4096 以及完全删除该命令。似乎没有什么区别,并且错误仍然存​​在。

使用react-native init DemoProject 创建了一个新项目,并且打包程序似乎是在该文件夹中启动的,所以问题出在哪里?

我的 package.json 是:

{
  "name": "React Native",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "native-base": "^0.5.18",
    "react": "15.4.1",
    "react-addons-shallow-compare": "^15.4.1",
    "react-native": "0.39.2",
    "react-native-drawer": "^2.3.0",
    "react-native-icons": "^0.7.1",
    "react-native-loading-spinner-overlay": "^0.4.1",
    "react-native-md-textinput": "^2.0.4",
    "react-native-overlay": "^0.5.0",
    "react-native-scrollable-tab-view": "^0.7.0",
    "react-native-tab-view": "0.0.40",
    "react-redux": "^4.4.6",
    "react-timer-mixin": "^0.13.3",
    "redux": "^3.6.0"
  },
  "devDependencies": {
    "babel-jest": "17.0.2",
    "babel-preset-react-native": "1.9.0",
    "jest": "17.0.3",
    "react-test-renderer": "15.4.1"
  },
  "jest": {
    "preset": "react-native"
  }
}

另外,如果重要的话,我在全球范围内安装了 sinopia、browserify 和 yarn。

首先,我不确定是否应该在 Mac 上再次通过 npm 添加所有本地依赖项,然后只需复制我的代码,否则应该没问题,但还有其他问题。

如果我可以在不重新添加依赖项的情况下解决这个问题,那就太好了。提前致谢。

【问题讨论】:

    标签: ios react-native ulimit


    【解决方案1】:

    只需进入我的基础项目目录并运行

    chmod -R 777 node_modules

    【讨论】:

    • 我正面临这个问题:child_process.js:504 throw err; ^ Error: spawnSync /../AwesomeProject/node_modules/react-native/local-cli/setup_env.sh EACCES
    • @JacoboKoenig,我正在使用 ubuntu,这是我的节点的问题。我从系统中卸载并清除了所有 node.js 、 npm 和 node 文件夹。再次重新安装节点,我的问题得到解决。
    • 这为我解决了问题
    【解决方案2】:

    这是 npm 的 bug。在他们修复错误之前,您有两种方法可以解决问题:

    1. 将 npm 版本降级到 5.3.0
    2. npm i react-native 之后,运行 chmod -R 775 node_modules

    【讨论】:

      【解决方案3】:

      在我的情况下,当我执行react-native link 时,错误出在一个特定文件上:

      错误:spawnSync ~/native-starter-kit/node_modules/react-native/local-cli/setup_env.sh EACCES

      所以我通过在该文件上运行:chmod +x 来修复它。

      【讨论】:

        【解决方案4】:

        正如 jerry 所指出的,这是 NPM 中的一个错误。现在有一个可用的修复程序。您可以使用 npm i -g npm 更新 NPM。

        我更新到版本 5.4.2 (npm --version),使用 npm remove --save react-native 删除了 React Native,并使用 npm i --save react-native 重新安装了 RN。这解决了我的问题。

        (作为替代方案,您可能想尝试使用 yarn 而不是 npm。)

        【讨论】:

          猜你喜欢
          • 2017-10-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-17
          • 2018-04-19
          • 1970-01-01
          • 2019-06-25
          相关资源
          最近更新 更多