Назад | Перейти на главную страницу

Какая комбинация глобального / локального sudo / notsudo для какого пакета установки node.js npm?

Я бы хотел установить подобные пакеты на MacOSX, но меня также интересуют версии для Windows или Linux:

npm install express
npm install swig
npm install mongodb
npm install consolidate
npm install http-auth

Если я вызову npm без sudo, некоторые из них выйдут из строя:

Error: EACCES, open '/Users/me/.npm/cookie/0.1.2/package.tgz'
npm ERR!  { [Error: EACCES, open '/Users/me/.npm/cookie/0.1.2/package.tgz']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/me/.npm/cookie/0.1.2/package.tgz',
npm ERR!   parent: 'express' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator

Если я установлю с помощью sudo, файлы окажутся там, где находится мой текущий каталог, в node_modules.

Если я использую команду -g, я получаю проблему с доступом.

Если я использую -g с sudo, он устанавливается, но приложение узла не может найти пакеты:

module.js:340
    throw err;
          ^
Error: Cannot find module 'express'

Я упустил что-то важное? Как правильно установить эти пакеты? (Мне сказали, что предпочтительнее устанавливать глобальную установку, чтобы все приложения всегда были связаны с самой последней версией пакета, поэтому, если это имеет значение, дайте мне знать)

Из npm help 5 npm-foldersстраница руководства:

  • Локальная установка (по умолчанию):
    кладет вещи в ./node_modules корня текущего пакета.

  • Глобальная установка (с -g):
    кладет вещи в /usr/local или где бы ни был установлен узел.

  • Установите его локально, если вы собираетесь require() Это.

  • Установите его глобально, если вы собираетесь запускать его из командной строки.

  • Если вам нужно и то, и другое, установите его в обоих местах или используйте ссылку npm.

Единственный раз, когда я использовал sudo была установка nw потому что я хотел, чтобы это было связано с /usr/bin. После вызова с sudo Я столкнулся с подобными ошибками, потому что root как принадлежал мой ~/.npm/_locks каталог.

Каждые install столкнулся с ошибкой, пока я chown ~/.npm и ~/.npm/_locks назад к моему пользователю.

Следуйте инструкциям на странице руководства и проверьте ~/.npm каждый раз, когда ты sudo.

Node.js будет перемещаться по папкам вверх, пока не найдет ваш пакет, так что вы можете установить все в своей домашней папке:

cd ~
npm install express