Node Менеджер версий (NVM) npm, устанавливающий модули в общую папку

Я установил NVM для node.js, используя инструкции из этого сообщения:

http://www.backdrifter.com/2011/02/18/using-nvm-and-npm-to-manage-node-js/

Когда я переключаюсь между версиями node, а затем использую npm для установки модуля, все модули помещаются в одну и ту же папку node_modules (~/node_modules/), а не в 'node_modules ', относящийся к этой версии node?

Любая идея о том, как исправить это?

Ответ 1

Основываясь на комментариях https://github.com/creationix/nvm/pull/97:

При установке пакетов с npm с помощью глобального коммутатора -g пакет попадает в соответствующий каталог (т..nvm/$VERSION/lib/ node_modules), однако node не может потребовать его поскольку он каким-то образом не ищет в нем префикс.

Таким образом, использование npm install -g xxxxx поместит модули в правильное место для NVM, но если вы попытаетесь require, один из них node не сможет найти модуль. Я все еще играю с этим и буду обновлять, если найду решение.

Обновление

Где NPM помещает node_modules? (см. https://docs.npmjs.com/files/folders)

  • Локальная установка (по умолчанию): помещает содержимое в. / node_modules текущего корня пакета.
  • Глобальная установка (с -g): помещает файл в /usr/local или где-либо node.
  • Установите его локально, если вы собираетесь require() его.
  • Установите его глобально, если вы собираетесь запустить его в командной строке.
  • Если вам нужны оба, установите его в обоих местах или используйте npm link.

Итак, я выполнил npm init (см. http://npmjs.org/doc/init.html) в моем проекте root dir, который сгенерировал package.json. Теперь, когда я запускаю npm install xxxxx, он создает директорию node_modules в моей папке проекта (которую я добавляю в свой .gitignore). Это работает для модулей, которые мне требуются в моем коде.

Для таких команд, как CoffeeScript, я устанавливаю с помощью npm install -g coffee-script, который помещает его в правильный каталог (.nvm/$VERSION/lib/node_modules). Хотя я не могу требовать эти модули (связь npm должна решить эту проблему), я могу запускать команды - т.е. coffee.

Ответ 2

Я только что установил экспресс глобально (-g) и возникла проблема при необходимости ( "экспресс" ). Так же, как Джесси Фогт сказал, что я просто переустановил экспресс, но на этот раз без -g просто так: "sudo npm install express" и теперь работает отлично!