Я пытаюсь настроить среду моего узла на новом экземпляре Ubuntu 12.04 с уже установленным Node 0.8.14, но у меня возникли проблемы при попытке запустить npm install
. Поэтому, когда я пытаюсь npm install
, он говорит, что мне нужно запустить его от имени пользователя root или администратора:
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)
В моем package.json он содержит следующие скрипты:
"scripts": {
"preinstall": "npm install -g coffee-script node-gyp",
"start": "node server.js",
"test": "mocha --require should --compilers coffee:coffee-script --colors"
},
Остальные зависимости действительны, так как я установил их прямо на своем компьютере (Mac). Кто-нибудь знает, почему это происходит?
sudo npm install --unsafe-perm
однакоsudo npm install
нет, хотя я добавил"unsafe-perm":true
в package.json ... Не знаю почемуnpm install --unsafe-perm
у меня работает, я пытался понять, что нужно изменитьuser
конфигурацию по умолчанию . Так что я сделалnpm set user my_user
иnpm set group my_group
, что добавляет соответствующие записи в корневом каталоге пользователя.npmrc
файл. Но проблема в том, что самаnode_modules
папка и ее подпапки все еще принадлежат пользователю root, так что это не помогает. Я не мог понять, каким образом они не будут принадлежать root.Единственное, что сработало для меня, это добавление
.npmrc
файла, содержащего:Добавление той же конфигурации, чтобы
package.json
не иметь никакого эффекта.источник
RUN npm set unsafe-perm true
Я столкнулся с той же проблемой, когда пытался опубликовать свое приложение nodejs на частном сервере, на котором запущены CentO, используя пользователя root. Эта же ошибка вызывается командой «postinstall»: «./node_modules/bower/bin/bower install» в моем файле package.json, поэтому единственное решение, которое работает для меня, - это использовать обе опции, чтобы избежать ошибки:
1: использовать параметр --allow-root для команды установки bower
2: использовать параметр --unsafe-perm для команды npm install
источник
OP здесь, я узнал намного больше об узле, так как я впервые задал этот вопрос. Хотя ответ Дмитрия был очень полезным, в конечном итоге он сделал для меня установку узла с правильными разрешениями.
Я настоятельно рекомендую не устанавливать узел с помощью каких-либо менеджеров пакетов, а собирать его самостоятельно, чтобы он находился в локальном каталоге с обычными разрешениями.
Эта статья содержит очень четкую пошаговую инструкцию, как это сделать:
https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04
источник
Я исправил это, изменив владельца
/usr/local
и~/Users/user-name
вот так:sudo chown -R my_name /usr/local
Это позволило мне сделать все без
sudo
источник