Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Node Version Manager (NVM) npm installing modules to common folder

Node Version Manager (NVM) npm installing modules to common folder

Problem

I've installed NVM for node.js using the instructions from this post:

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

When I switch between node versions and then use npm to install a module, all the modules are placed in the same 'node_modules' folder (~/node_modules/) instead of in the 'node_modules' directory specific to that version of node?

Any idea on how to remedy this?

Problem courtesy of: grookle

Solution

Based on the comments from https://github.com/creationix/nvm/pull/97:

When installing packages with npm using the global switch -g the package ends up in the proper directory (i.e. .nvm/$VERSION/lib/node_modules), however node is unable to require it since it somehow isn't searching on it's prefix.

So using npm install -g xxxxx will put the modules in the correct location for NVM but if you try to require one of them node can't find the module. I am still playing around with this and will update if I find a solution.

Update

Where does NPM put node_modules? (see https://docs.npmjs.com/files/folders)

  • Local install (default): puts stuff in ./node_modules of the current package root.
  • Global install (with -g): puts stuff in /usr/local or wherever node is installed.
  • Install it locally if you're going to require() it.
  • Install it globally if you're going to run it on the command line.
  • If you need both, then install it in both places, or use npm link.

So what I did was run npm init (see http://npmjs.org/doc/init.html) in my projects root dir which generated package.json. Now when I run npm install xxxxx it creates a node_modules dir in my project folder (which I add to my .gitignore). This works for modules that I require in my code.

For commands such as CoffeeScript I install with npm install -g coffee-script which puts it in the correct directory (.nvm/$VERSION/lib/node_modules). While I can't require these modules (npm link should solve this problem) I can run the commands - i.e. coffee.

Solution courtesy of: Jesse Vogt

Discussion

View additional discussion.



This post first appeared on Node.js Recipes, please read the originial post: here

Share the post

Node Version Manager (NVM) npm installing modules to common folder

×

Subscribe to Node.js Recipes

Get updates delivered right to your inbox!

Thank you for your subscription

×