节点版本pipe理器(NVM)npm将模块安装到通用文件夹

我已经使用这个post的说明安装了node.js的NVM:

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

当我在节点版本之间切换,然后使用npm来安装一个模块时,所有的模块都放在同一个“node_modules”文件夹(〜/ node_modules /)中,而不是在特定于该版本节点的“node_modules”目录中?

任何想法如何弥补这一点?

       

网上收集的解决方案 "节点版本pipe理器(NVM)npm将模块安装到通用文件夹"

基于https://github.com/creationix/nvm/pull/97的评论:

当使用全局开关-g安装npm的软件包时,软件包会在合适的目录(即.nvm / $ VERSION / lib / node_modules)中结束,但节点不能要求它,因为它不会search它的前缀。

因此,使用npm install -g xxxxx会将这些模块放在NVM的正确位置,但如果您试图require其中一个节点找不到该模块。 我仍然在玩这个,并会更新,如果我find一个解决scheme。

更新

NPM在哪里放置node_modules? (请参阅https://docs.npmjs.com/files/folders

  • 本地安装(默认):将东西放在当前软件包根目录的./node_modules中。
  • 全局安装(使用-g):把东西放在/ usr / local或安装节点的地方。
  • 如果你打算require()它在本地安装。
  • 如果要在命令行上运行它,请全局安装它。
  • 如果你需要两个,那么在两个地方安装它,或使用npm link

所以我做的是运行npm init (参见http://npmjs.org/doc/init.html )在我的项目的根目录生成package.json。 现在,当我运行npm install xxxxx它会在我的项目文件夹(我将其添加到.gitignore中)中创build一个node_modules目录。 这适用于我在我的代码中需要的模块。

对于像CoffeeScript这样的命令,我使用npm install -g coffee-script进行npm install -g coffee-script ,将它放在正确的目录(.nvm / $ VERSION / lib / node_modules)中。 虽然我不能要求这些模块(npm链接应该解决这个问题),我可以运行命令 – 即coffee

我只是在全球安装快递(-g),并且在要求(“快递”)时出现问题。 就像Je​​sse Vogt说的,我只是重新安装了express,但是这次没有-g就像这样:“sudo npm install express”,现在正在运行完美!