Ответ 1
Просто нужно было перейти в мою базовую директорию проекта и запустить
chmod -R 777 node_modules
Итак, я получил свой первый проект в 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
, и, кажется, пакет запускается в этой папке, так что проблема - это что-то еще?
Мой пакет .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"
}
}
Кроме того, если это имеет значение, у меня есть синопсия, браузер и пряжа, установленные во всем мире.
Начнем с того, что я не уверен, что я должен добавить все локальные зависимости через npm еще раз на Mac, а затем просто скопировать мой код, или это должно быть хорошо, а что-то еще не так.
Было бы здорово, если бы я смог разобраться в этом без повторного добавления зависимостей. Спасибо заранее.
Просто нужно было перейти в мою базовую директорию проекта и запустить
chmod -R 777 node_modules
Это ошибка npm. Прежде чем исправить ошибку, у вас есть 2 способа исправить проблему:
в моем случае ошибка была с одним конкретным файлом, когда я делаю react-native link
:
Error: spawnSync ~/native-starter-kit/node_modules/react-native/local-cli/setup_env.sh EACCES
поэтому я исправил его, запустив: chmod +x
в этом файле.
Как заметил Джерри, это ошибка в NPM. Теперь доступно исправление. Вы можете обновить NPM с помощью npm i -g npm
.
Я обновил версию 5.4.2 (npm --version
), удалил React Native с помощью npm remove --save react-native
и переустановил RN с помощью npm i --save react-native
. Это исправило проблему для меня.
(В качестве альтернативы вы можете попробовать пряжу вместо npm.)
chmod -R 777 node_modules
Это действительно работает!