我已经使用此帖子中的说明为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'目录中?
关于如何解决这个问题的任何想法?
答案 0 :(得分:34)
基于https://github.com/creationix/nvm/pull/97的评论:
使用全局开关-g时使用npm安装软件包时 包裹最终在正确的目录中(即 .nvm / $ VERSION / lib / node_modules),但节点无法要求它 因为它以某种方式不会搜索它的前缀。
因此,使用npm install -g xxxxx
会将模块放在NVM的正确位置,但如果您尝试require
其中一个节点找不到该模块。我仍在玩这个,如果找到解决方案,我会更新。
<强>更新强>
NPM在哪里放置node_modules? (见https://docs.npmjs.com/files/folders)
require()
,请在本地安装。npm link
。所以我所做的是在生成package.json的项目根目录中运行npm init
(参见http://npmjs.org/doc/init.html)。现在,当我运行npm install xxxxx
时,它会在我的项目文件夹中创建一个node_modules目录(我将其添加到我的.gitignore中)。这适用于我在代码中需要的模块。
对于像CoffeeScript这样的命令,我使用npm install -g coffee-script
进行安装,将其放在正确的目录中(.nvm / $ VERSION / lib / node_modules)。虽然我不能要求这些模块(npm链接应该解决这个问题)我可以运行命令 - 即coffee
。
答案 1 :(得分:1)
我刚安装了全球快递(-g),并且在需要时遇到问题(&#34;表达&#34;)。就像Jesse Vogt说的那样,我刚刚重新安装了express,但这次没有-g就像这样:&#34; sudo npm install express&#34;现在工作得很好!