React-Native启动setup_env.sh时出现EACCESS错误

27

所以,我在Windows上成功运行了我的第一个ReactNative项目并针对Android操作系统进行了配置。在Mac上查看项目后,按照完全相同的方式进行了配置,但是当我尝试使用react-native start启动React软件包管理器时,出现以下错误:

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,这对非根用户是允许的。我还尝试以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 添加所有本地依赖项,然后只需复制我的代码,或者这样做是可以的,但其他地方出了问题。

如果我不必重新添加依赖项就能解决这个问题,那就太好了。提前致谢。

5个回答

96

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

chmod -R 777 node_modules


2
我遇到了这个问题:`child_process.js:504 throw err; ^错误:spawnSync /../AwesomeProject/node_modules/react-native/local-cli/setup_env.sh EACCES` - Hashir Hussain
@JacoboKoenig,我正在使用Ubuntu,我的问题出在我的Node上。 我卸载并清除了系统中的所有node.js、npm和node文件夹。 然后重新安装了Node,问题得到了解决。 - Hashir Hussain
这个对我有用 - mad_greasemonkey

10

这是一个与npm相关的bug。在他们修复该漏洞之前,你有两种方法来解决问题:

  1. 将npm版本降级至5.3.0
  2. 在安装react-native后运行chmod -R 775 node_modules

5

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

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

所以我通过运行以下命令解决了该问题:chmod +x


5

我有同样的问题,尝试了这个方法,最初的问题得到了解决。

chmod -R 775 android

(该命令为修改文件夹和文件权限的命令)


0

正如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。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接