Ответ 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
.