Не удалось установить 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.

ваши возможности:

  1. выполнить npm install С --unsafe-perm флаг:

    [sudo] npm install --unsafe-perm
    
  2. добавить unsafe-perm флаг в свой package.json:

    "config": {
        "unsafe-perm":true
    }
    
  3. не используйте 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 здесь, я узнал намного больше об узле, так как я впервые задал этот вопрос. Хотя ответ Дмитрия был очень полезен, в конечном итоге он сделал это для меня, чтобы установить узел с правильными разрешениями.

Я настоятельно рекомендую не устанавливать узел с помощью каких-либо менеджеров пакетов, а скомпилировать его самостоятельно, чтобы он находился в локальном каталоге с обычными разрешениями.

эта статья предоставляет очень четкую пошаговую инструкцию о том, как это сделать Итак:

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