Не удалось установить Npm с "не удается запустить в wd"
Я пытаюсь настроить среду моего узла на новом экземпляре Ubuntu 12.04, с уже установленным узлом 0.8.14, но я столкнулся с проблемами при попытке запустить npm install
.
Поэтому, когда я пытаюсь npm install
, Он говорит, что мне нужно запустить его как root или adminisrator:
Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'
npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_type: 'Directory',
npm ERR! fstream_path: '/usr/local/lib/node_modules/coffee-script',
npm ERR! fstream_class: 'DirWriter',
npm ERR! fstream_stack:
npm ERR! [ 'DirWriter._create (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)',
npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR! 'Object.oncomplete (fs.js:297:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
но когда я пытаюсь запустить его как sudo, он говорит следующее:
npm WARN cannot run in wd PackNodeDev@0.0.1-166 npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)
в моем пакете.json, он содержит следующие скрипты:
"scripts": {
"preinstall": "npm install -g coffee-script node-gyp",
"start": "node server.js",
"test": "mocha --require should --compilers coffee:coffee-script --colors"
},
остальные devdependencies действительны, так как у меня есть устанавливал все правильно на моей собственной машине (Mac) Кто-нибудь знает, почему это происходит?
5 ответов
на документация говорит (кроме здесь):
если npm был вызван с правами root, то он изменит uid на учетную запись Пользователя или uid, указанный
user
config, по умолчаниюnobody
. Установитеunsafe-perm
флаг для запуска скриптов с правами root.
ваши возможности:
-
выполнить
npm install
С--unsafe-perm
флаг:[sudo] npm install --unsafe-perm
-
добавить
unsafe-perm
флаг в свойpackage.json
:"config": { "unsafe-perm":true }
-
не используйте
preinstall
скрипт для установки глобальных модулей, установите их отдельно, а затем запустите обычныйnpm install
без root-привилегий:sudo npm install -g coffee-script node-gyp npm install
по теме:
Я испытал ту же проблему при попытке опубликовать приложение nodejs на частном сервере под управлением CentOs с помощью пользователя root. Та же ошибка запускается "postinstall": "./node_modules/bower/bin / bower install " в моем пакете.JSON-файл, поэтому единственное решение, которое работало для меня, - использовать оба варианта, чтобы избежать ошибки:
1: используйте параметр --allow-root для команды установки bower
"postinstall": "./node_modules/bower/bin/bower --allow-root install"
2: используйте параметр -- unsafe-perm для команды установки npm
npm install --unsafe-perm
единственное, что сработало для меня, это добавление содержит:
unsafe-perm = true
добавление той же конфигурации в package.json
не имело никакого эффекта.
OP здесь, я узнал намного больше об узле, так как я впервые задал этот вопрос. Хотя ответ Дмитрия был очень полезен, в конечном итоге он сделал это для меня, чтобы установить узел с правильными разрешениями.
Я настоятельно рекомендую не устанавливать узел с помощью каких-либо менеджеров пакетов, а скомпилировать его самостоятельно, чтобы он находился в локальном каталоге с обычными разрешениями.
эта статья предоставляет очень четкую пошаговую инструкцию о том, как это сделать Итак:
я исправил это, изменив собственность /usr/local
и ~/Users/user-name
вот так:
sudo chown -R my_name /usr/local
Это позволило мне делать все без sudo