npm global path prefix - macos

I am being more cautious than usual because I have been confused by the behavior of npm in the past.
I am on a Mac and have installed node.js through brew install node.
Now that I want to run jslint.js on the command-line as the command jslint I find that the canonical way to accomplish this is sudo npm install -g jslint which ran successfully with this output:
$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint#0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt#1.0.10 (abbrev#1.0.4)
Subsequently
$ jslint ply.js
zsh: command not found: jslint
due to /usr/local/share/npm/bin not being in my $PATH.
1) Why did brew not install global npm bin path to path? Maybe it did, but something zsh does is messing it up. Where might I be able to find that?
2) Should I do this? (Append :/usr/local/share/npm/bin to the exported $PATH at the bottom of my ~/.zshrc)
It seems like this isn't the right way to do it because if I install something else later (using Homebrew or something) I'll be needing to append it to my zsh startup script to set the path. I guess in this particular instance it's just a matter of the npm install -g not making the right symlinks in a "proper" location (like /usr/local/bin maybe).
I think what I will do is manually build out symlinks inside /usr/local/bin for any programs that I have trouble with and it should be good enough for my purposes.
EDIT: I'm updating this in 2019, because this old question is popular but now outdated both in terms of my personal workflow and also in terms of how to best go about installing node and managing its various dependencies.
My personal workflow is now to use the installer obtained from nodejs.org to install node on systems. I actually trust this more than the homebrew package itself, because it knows best how to manage the files. If you want to change your system node from 8.10 to 10.15, whether on Mac or Windows, simply download the installer from nodejs.org for 10.15 for your OS. Attempting to upgrade node installed via homebrew has always proven to be a more difficult approach in my experience.
Also, the biggest thing to point out is that the use of sudo as shown in my npm install of jslint example above is highly discouraged; I am fairly certain that homebrew packages should never be installed or interacted with in any way using the superuser. It should not be necessary, and will lead to file permission headaches!
Furthermore I recommend ESLint over jslint, and have not used jslint in years.

Extending your PATH with:
export PATH=/usr/local/share/npm/bin:$PATH
isn't a terrible idea. Having said that, you shouldn't have to do it.
Run this:
npm config get prefix
The default on OS X is /usr/local, which means that npm will symlink binaries into /usr/local/bin, which should already be on your PATH (especially if you're using Homebrew).
So:
npm config set prefix /usr/local if it's something else, and
Don't use sudo with npm! According to the jslint docs, you should just be able to npm install it.
If you installed npm as sudo (sudo brew install), try reinstalling it with plain ol' brew install. Homebrew is supposed to help keep you sudo-free.

Spent a while on this issue, and the PATH switch wasn't helping. My problem was the Homebrew/node/npm bug found here - https://github.com/npm/npm/issues/3794
If you've already installed node using Homebrew, try ****Note per comments that this might not be safe. It worked for me but could have unintended consequences. It also appears that latest version of Homebrew properly installs npm. So likely I would try brew update, brew doctor, brew upgrade node etc before trying****:
npm update -gf
Or, if you want to install node with Homebrew and have npm work, use:
brew install node --without-npm
curl -L https://npmjs.org/install.sh | sh

I use brew and the prefix was already set to be:
$ npm config get prefix
/Users/[user]/.node
I did notice that the bin and lib folder were owned by root, which prevented the usual non sudo install, so I re-owned them to the user
$ cd /Users/[user]/.node
$ chown -R [user]:[group] lib
$ chown -R [user]:[group] bin
Then I just added the path to my .bash_profile which is located at /Users/[user]
PATH=$PATH:~/.node/bin

I managed to fix Vue Cli no command error by doing the following:
In terminal sudo nano ~/.bash_profile to edit your bash profile.
Add export PATH=$PATH:/Users/[your username]/.npm-packages/bin
Save file and restart terminal
Now you should be able to use vue create my-project and vue --version etc.
I did this after I installed the latest Vue Cli from https://cli.vuejs.org/
I generally use yarn, but I installed this globally with npm npm install -g #vue/cli. You can use yarn too if you'd like yarn global add #vue/cli
Note: you may have to uninstall it first globally if you already have it installed: npm uninstall -g vue-cli
Hope this helps!

brew should not require you to use sudo even when running npm with -g. This might actually create more problems down the road.
Typically, brew or port let you update you path so it doesn't risk messing up your .zshrc, .bashrc, .cshrc, or whatever flavor of shell you use.

In newer MacOS versions you need to edit the .zshrc file not .bash_profile:
In your terminal nano ~/.zshrc
then add the line:
export PATH=$PATH:/Users/[your username]/.npm-packages/bin

Try running:
PATH=$PATH:~/npm/bin
and then do a test by running express in the command line. This worked for me.

If you have linked the node packages using sudo command
Then go to the folder where node_modules are installed globally.
On Unix systems they are normally placed in /usr/local/lib/node or /usr/local/lib/node_modules when installed globally. If you set the NODE_PATH environment variable to this path, the modules can be found by node.
Windows XP - %USERPROFILE%\Application Data\npm\node_modules
Windows 7 - %AppData%\npm\node_modules
and then run the command
ls -l
This will give the list of all global node_modules and you can easily see the linked node modules.

sudo brew is no longer an option so if you install with brew at this point you're going to get 2 really obnoxious things:
A: it likes to install into /usr/local/opts or according to this, /usr/local/shared. This isn't a big deal at first but i've had issues with node PATH especially when I installed lint.
B: you're kind of stuck with sudo commands until you either uninstall and install it this way or you can get the stack from Bitnami
I recommend this method over the stack option because it's ready to go if you have multiple projects. If you go with the premade MEAN stack you'll have to set up virtual hosts in httpd.conf (more of a pain in this stack than XAMPP)plust the usual update your extra/vhosts.conf and /etc/hosts for every additional project, unless you want to repoint and restart your server when you get done updatading things.

Any one got the same issue it's related to a conflict between brew and npm
Please check this solution https://gist.github.com/DanHerbert/9520689

I uninstalled node from homebrew on M1 Apple Silicon and instead used the Mac Installer from https://nodejs.org/en/download/. After doing that I was able to install with npm and npx.

Simple solution is ...
Just put below command :
sudo npm config get prefix
if it's not something like these /usr/local, than you need to fix it using below command.
sudo npm config set prefix /usr/local...
Now it's 100% working fine

Related

What's the difference between installing Yarn from npm, Homebrew, and from source?

I read that on OS X you can install Yarn either by
curl -o- -L https://yarnpkg.com/install.sh | bash
brew install yarn
npm i -g yarn
What functional difference is there between these three methods? Why would someone choose one over the others?
when using brew to install packages, you install them system wide. that is, you cannot have more than one version for the same package, which is usually problematic. for this reason, many other technologies have spawn, such as docker, snap.
moreover, each package manager has its own lifecycle and packs original package in a different manner for ease of use, distribution and maintenance. for instance, npm container is based on the release of npm package itself.
usually, you should stick to the package manager of the same ecosystem that you are using. specifically to your case, it will be recommended to use npm to install and update your package (using package.json). which will give each of your project to pin and lock the desired yarn version that you like, without any affecting your system wide.
speaking of npm, you might wish to look at this answer
curl downloads the installation script from yarnpkg.com, and installs yarn using that script
brew is a package manager for MacOS. It's meant to make things easier for people when installing commands for the terminal. When you install with brew, the package get's put into /usr/local/bin instead of /usr/bin so I believe that this is kind of like a virtual environment, and yarn wouldn't be installed into the core of your machine. You'll have to install homebrew before you can use it, and you install it using curl. I believe that there is less risk when using homebrew because of the reasons that it is kind of like a virtual environment
npm is a package manager for javascript, it's the same as yarn. It's meant for easy installation of javascript packages.
I use brew for all installs to the terminal, and npm for all installs of javascript packages.

Why doesn't zsh recognize command from globally installed npm package?

After installing oh-my-zsh and reinstalling node and npm again, I install npm-check-updates globally and try to call 'ncu' (the npm-check-updates command). However, I get an error: zsh:
command not found: ncu. Does anyone know how to fix this?
I have corrected this problem with the following instructions:
sudo npm install -g npm-check-updates
Make sure the 'ncu' package can be found in the $PATH environment variable. Try this, to find where 'ncu' is supposed to be installed:
which ncu
If it still gives you trouble, try to see if it's in /usr/bin, $HOME/npm/bin, /usr/local/lib or /usr/sbin, and check that your $PATH environment variable contains a way to 'ncu'. Your $PATH environment variable, which can be found in
$HOME/.bashrc (Linux)
$HOME/.bash_profile (MacOS)
should look something like this:
export PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$HOME/npm/bin
After an install you can run rehash so zsh will analyse what new executables are available on $PATH.
Not sure if that would fix the problem, I know it fixes the missing tab completion entry after install.
FYI I am using a OSX.
The problem was that my export path in my .zshrc was wrong.
This was what it was previously:
export PATH=$HOME/bin:/usr/local/bin:$PATH.
Notice there is nothing pointing at npm or any of the packages I installed globally.
For anyone who has this problem in the future...
Ensure that npm is installed and that you can still run npm commands (if not uninstall then install npm). Then run npm -g list --depth 0 to list all your global packages.
Go into your home folder and press ⌘+Shift+. (shows all hidden files/folders), there should be a .npm folder there, ensure the packages in the list you obtained in the previous step matches what's in the bin folder.
Edit your export PATH string accordingly:
export PATH=$HOME/bin:/usr/local/bin:**$HOME/.npm/bin**:$PATH.
This worked for me!

How do I update npm on Windows?

When I install node 0.10.33 from the msi ( http://nodejs.org/download/ ), I get an old version of npm (1.4.28). How can I upgrade npm on Windows?
npm install -g npm
does not work; I still have the old npm.
You need to follow the Windows upgrade instructions ( https://docs.npmjs.com/try-the-latest-stable-version-of-npm )
tl;dr - npm -g install npm does work, but the old version of npm is still in your PATH.
To fix this, do one of these:
Option 2: remove both of
C:\Program Files (x86)\nodejs\npm
C:\Program Files (x86)\nodejs\npm.cmd
Or
Option 3: Open cmd.exe as administrator, navigate to C:\Program Files (x86)\nodejs and
then run the installation without -g:
npm install npm#latest
*There is an npm package that automate this Option 3:
npm install -g npm-win-upgrade
We at Microsoft Open Source wrote a small tool to automate the process outlined above. You can find it here or just install and run it by executing the following in an elevated command prompt / PowerShell:
npm install -g npm-windows-upgrade
npm-windows-upgrade
There May be many ways to update your npm in Windows
Way 1
Open you power shell as Administrator and run following commands step by step.
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
npm install -g npm-windows-upgrade
npm-windows-upgrade
Here you can select your preferred version of npm
Ready to go !
Way 2
You can simply upgrade to the latest npm version with following command
npm install npm#latest -g
or if you want a specific version of npm simply run
npm install npm#{version} -g for example npm install npm#3.3.12 -g
Now simply run npm --version or npm -v to know your current version of npm
3.3.12 is my preferred version of npm that best suits for approximately every package.
UPDATE
npm install npm#latest -g
the correct npm version is now already shipped with node.js so you can directly switch node version.
you can nvm (Node Version Manager) package to switch node versions very quick and easy.
So, TL;DR; this worked:
Uninstall node
From a command prompt, run where npm
If you had npm installed via chocolatey, you'll see a path like C:\ProgramData\chocolatey\bin\npm.exe - DELETE it!
Now install NodeJS using the appropriate MSI from https://nodejs.org/en/download/
In your favourite shell, type npm --version - this should now echo the version of NPM that came with NodeJS (at the time of this writing, that version is 3.10.10)
This is what worked for me (goofy me!)
I had (age ago) installed npm via chocolatey, which created a chocolatey initiated npm.exe in C:\ProgramData\chocolatey\bin\npm.exe. This was npm version 1.4.9 and wouldn't update no matter what one did including uninstall and reinstall NodeJs.
=======
EDIT: Better way to install node and npm
As of today (27/06/2017), the best way to install and manage node and npm is to install nvm (Node Version Manager) as explained here: https://github.com/coreybutler/nvm-windows. Once you have nvm, installing any node version is super easy:
Open your favourite console (CMD, Cmder, PowerShell)
Type nvm install 6.10.2 (to install node version 6.10.2)
To see the currently active version, type nvm list. This prints something like below:
6.9.3
* 6.9.2 (Currently using 64-bit executable)
6.9.1
6.10.2
It's late 2021 and a lot of these answers can be confusing. npm install -g npm can break your installation. (When I did this, I had to run the Node MSI "Repair" tool to get it working again.) npm-windows-upgrade has not seen a release in over 2 years, and the repo has been archived by its maintainer.
As far as I can tell, there are two options that seem to work reliably today.
Use where npm from DOS prompt or which npm from WSL / Git Bash / etc, to determine which NPM binary is being used.
cd to that path, then run npm install npm#latest (without the -g flag!). npm update npm should have the same effect. You may need an elevated prompt (Run As Administrator).
Verify that this worked by running npm --version.
This worked for me. The other option is:
Completely uninstall NPM + Node using the Add/Remove Programs settings page.
Install an MSI from the Node website.
To upgrade NPM on windows 10
Uninstall Node.js
Restart your system
on command prompt type where npm
delete if npm and npm-cache folder exists in AppData/Roaming
Install Node.js (https://nodejs.org/en/)
You need to follow the Windows upgrade instructions
https://www.npmjs.com/package/npm-windows-upgrade
First, ensure that you can execute scripts on your system by running the following command from an elevated PowerShell. To run PowerShell as Administrator, click Start, search for PowerShell, right-click PowerShell and select Run as Administrator.
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
npm install --global --production npm-windows-upgrade
npm-windows-upgrade
Want to just install the latest version?
1.npm-windows-upgrade --npm-version latest
I did something similar to Sam Mikes. I'm only sharing this because I couldn't get either of his solutions to work on my rig. After a bit of playing around, this is what worked for me:
Remove NPM/Node from your Environment Variables, both for user and system.
Close your open console if you have one open, then open a console as administrator
Change directories to %USERPROFILE% -- that's a window's environment variable that takes you to C:\Users\CurrentlyLoggedInUser
Run from the console in %USERPROFILE%, "C:\Program Files\nodejs\npm" install npm -g (you might have yours in the x86 folder)
If this solution would work for you, step 4 would have worked, and npm -v will show a an up-to-date version
Re-add Node (in Program Files)/NPM (in App Data -- the one installed in Program Files should be the old one) to your user and system environment variables
Note: I've used the Microsoft automated script in the past to fix this, but only because I didn't realize how easy it would be to do it myself.
So none of the previous answers solved the issue for me so I thought I would post my specific solution, which I managed to figure out by going through all the other answers so they were really helpful.
My issue was because I had used chocolatey to install node and possibly npm (looking at chocolatey site now I shouldn't have done that).
To solve the issue I simply had to run the relevant choco uninstall commands for npm and node and then everything switched to the other version of node which I had also installed using the node msi (from node's website).
I hope that helps anyone else that may have gone down the same path as me.
I tried almost every answer but none of them works my way.
Neither npm-windows-upgrade worked nor did the npm install npm#latest etc etc worked.
For people like me I will suggest you guys downloading the latest installer from Node.js website, let the existing version of node directory be on it's place and without changing anything just install the msi installer and you will end up with an upgraded version of node.
My case was upgrading node from 6 to 8.9.3
all npm install commands were getting stuck and will throw error (behind proxy error) after sometime. setting up proxy was not helping. This is what I did.
Had 8.11 nodeJS
Uninstalled NodeJS from Programs & Features with the uninstaller.
Reboot (or you probably can get away with killing all node-related processes from Task Manager).
Look for these folders and remove them (and their contents) if any still exist. Depending on the version you installed, UAC settings, and CPU architecture, these may or may not exist:
• C:\Program Files (x86)\Nodejs
• C:\Program Files\Nodejs
• C:\Users{User}\AppData\Roaming\npm (or %appdata%\npm)
• C:\Users{User}\AppData\Roaming\npm-cache (or %appdata%\npm-cache)
• C:\Users{User}.npmrc (and possibly check for that without the . prefix too)
Check your %PATH% environment variable to ensure no references to Nodejs or npm exist.
If it's still not uninstalled, type where node at the command prompt and you'll see where it resides -- delete that (and probably the parent directory) too.
Reboot, for good measure.
Installed 6.11 nodejs then it worked.
Use npm-windows-upgrade tool to simply upgrade. Steps are provided in the link.
For update node npm on Windows
I have to delete node in:
C:\Users**YOUR USER**\AppData\Roaming
And reinstall node

Gulp command not found after install

I installed gulp(globally) and it looks like it worked because it ran this code:
├── tildify#0.2.0
├── interpret#0.3.5
├── pretty-hrtime#0.2.1
├── deprecated#0.0.1
├── archy#0.0.2
├── minimist#0.2.0
├── semver#2.3.2
├── orchestrator#0.3.7 (stream-consume#0.1.0, sequencify#0.0.7, end-of-stream#0.1.5)
├── chalk#0.5.1 (escape-string-regexp#1.0.1, ansi-styles#1.1.0, supports-color#0.2.0, strip-ansi#0.3.0, has-ansi#0.1.0)
├── gulp-util#2.2.20 (lodash._reinterpolate#2.4.1, dateformat#1.0.8-1.2.3, vinyl#0.2.3, through2#0.5.1, multipipe#0.1.1, lodash.template#2.4.1)
├── liftoff#0.12.0 (extend#1.2.1, minimist#0.1.0, resolve#0.7.4, findup-sync#0.1.3)
└── vinyl-fs#0.3.5 (graceful-fs#3.0.2, lodash#2.4.1, mkdirp#0.5.0, strip-bom#0.3.1, vinyl#0.2.3, through2#0.5.1, glob-watcher#0.0.6, glob-stream#3.1.14)
But when I type gulp it says -bash: gulp: command not found
Any idea what's going on?
Turns out that npm was installed in the wrong directory so I had to change the “npm config prefix” by running this code:
npm config set prefix /usr/local
Then I reinstalled gulp globally (with the -g param) and it worked properly.
This article is where I found the solution: http://webbb.be/blog/command-not-found-node-npm
Not sure why the question was down-voted, but I had the same issue and following the blog post recommended solve the issue. One thing I should add is that in my case, once I ran:
npm config set prefix /usr/local
I confirmed the npm root -g was pointing to /usr/local/lib/node_modules/npm, but in order to install gulp in /usr/local/lib/node_modules, I had to use sudo:
sudo npm install gulp -g
If you're using tcsh (which is my default shell on Mac OS X), you probably just need to type rehash into the shell just after the install completes:
npm install -g gulp
followed immediately by:
rehash
Otherwise, if this is your very first time installing gulp, your shell may not recognize that there's a new executable installed -- so you either need to start a new shell, or type rehash in the current shell.
(This is basically a one-time thing for each command you install globally.)
I realize that this is an old thread, but for Future-Me, and posterity, I figured I should add my two-cents around the "running npm as sudo" discussion. Disclaimer: I do not use Windows. These steps have only been proven on non-windows machines, both virtual and physical.
You can avoid the need to use sudo by changing the permission to npm's default directory.
How to: change permissions in order to run npm without sudo
Step 1: Find out where npm's default directory is.
To do this, open your terminal and run:
npm config get prefix
Step 2: Proceed, based on the output of that command:
Scenario One: npm's default directory is /usr/local
For most users, your output will show that npm's default directory is /usr/local, in which case you can skip to step 4 to update the permissions for the directory.
Scenario Two: npm's default directory is /usr or /Users/YOURUSERNAME/node_modules or /Something/Else/FishyLooking
If you find that npm's default directory is not /usr/local, but is instead something you can't explain or looks fishy, you should go to step 3 to change the default directory for npm, or you risk messing up your permissions on a much larger scale.
Step 3: Change npm's default directory:
There are a couple of ways to go about this, including creating a directory specifically for global installations and then adding that directory to your $PATH, but since /usr/local is probably already in your path, I think it's simpler to just change npm's default directory to that. Like so: npm config set prefix /usr/local
For more info on the other approaches I mentioned, see the npm docs here.
Step 4: Update the permissions on npm's default directory:
Once you've verified that npm's default directory is in a sensible location, you can update the permissions on it using the command:
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
Now you should be able to run npm <whatever> without sudo. Note: You may need to restart your terminal in order for these changes to take effect.
I had similar problem I did the following steps and it worked.Go to mac terminal and execute the commands,
1.npm config set prefix /usr/local
2.sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
This two commands will set the npm path right and you no longer have to use sudo in npm.
Next uninstall the gulp
npm uninstall gulp
Installl gulp again without sudo,
npm install gulp -g
This should work!!
I had this problem with getting "command not found" after install but I was installed into /usr/local as described in the solution above.
My problem seemed to be caused by me running the install with sudo. I did the following.
Removing gulp again with sudo
Changing the owner of /usr/local/lib/node_modules to my user
Installing gulp again without sudo. "npm install gulp -g"
If you are on Mac run use root privilege
sudo npm install gulp-cli --global
To check if it's installed run
gulp -v
CLI version: 2.2.0 (The output)
Local version: Unknown
You need to do this npm install --global gulp. It works for me and i also had this problem. It because you didn't install globally this package.
I got this working on Win10 using a combination of the answers from above and elsewhere. Posting here for others and future me.
I followed the instructions from here: https://gulpjs.com/docs/en/getting-started/quick-start but on the last step after typing gulp --version I got the message -bash: gulp: command not found
To fix this:
I added %AppData%\npm to my Path environment variable
Closed all gitbash (cmd, powershell, etc...) and restarted gitbash.
Then gulp --version worked
Also, found the below for reasons why not to install gulp globally and how to remove it (not sure if this is advisable though):
what does gulp-"cli" stands for?
How to uninstall Gulp CLI from NPM globally?
In my case adding sudo before npm install solved gulp command not found problem
sudo npm install
If you want to leave your prefix intact, just export it's bin dir to your PATH variable:
export PATH=$HOME/your-path/bin:$PATH
I added this line to my $HOME/.profile and sourced it.
Setting prefix to /usr/local makes you use sudo, so I like to have it in my user dir. You can check your prefix with npm prefix -g.
Behind corporate proxies the global command usually doesnt work , hence u can run the command where the gulp is installed locally.

express command not found in bash after installing it with npm

just installed new ubuntu vm to test around with node
installed things in this order:
node
mongodb-server
npm
express
mongoose
now, trying to create a new app i noticed express cannot be used in the shell.
express -v returns
express: command not found
i installed npm like this
curl http://npmjs.org/install.sh | sudo sh
and i installed express this way
npm install express
any ideas?
Starting from express 4.00 you also need to install express generator with:
npm install -g express-generator
Only after this will you be able to run express as a command!
For confirmation see: ExpressJS.com - Migrating to Express 4
npm install express -g
You need to install it globally.
Npm 1.0 installs modules locally by default. So the bash executable lives in /node_modules/bin/. You can add that folder to PATH or you can just install express globally so that it's picked up by PATH
I had this problem and was installing node via Homebrew. The problem was being caused by Homebrew.
So I did:
brew uninstall node
and then installed node using the installer on the nodejs.org site.
Then I ran:
npm install -g express
And voila no problems.
With the release of Express 4.0.0 it looks like you need to do sudo npm install -g express-generator.
EDIT 2017-06-29: this answer is 6+ years old, but still gets votes/traffic. Instead (for any new users with problems) I'd trust both NODE_PATH official doc and its corresponding bit about REPL usage before this answer.
Quite similar to this issue, node was not finding my global express install, so a require('express') statement would fail.
What fixed this for me, when a global install wasn't being picked up by node was making sure NODE_PATH env. variable was is set correctly.
On Ubuntu 11.04, with node version 0.5.0-pre, the paths me were:
NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node
So, to clarify you might want to export the above env. variable, or you can just test the above values out by doing:
NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node node ./you_app.js
I had to do a combination of things:
From node.js modules path:
echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bash_profile && . ~/.bash_profile
This sets the file path in bash profile (can be viewed using nano .bash_profile
Slightly modified from Raynos (above) since I needed sudo:
sudo npm install express -g
Slightly modified from Fazi (above) since I needed sudo:
sudo npm install -g express-generator
TEST YOUR APPLICATION:
run `DEBUG=myapp:* npm start`
Ref: http://expressjs.com/en/starter/generator.html
IF you are running windows:
export NODE_PATH="C:\Users\IMarek\AppData\Roaming\npm\node_modules"

Resources