How to resolve 'npm should be run outside of the node repl, in your normal shell'
For Windows users, run npm
commands from the Command Prompt (cmd.exe), not Node.Js (node.exe). So your "normal shell" is cmd.exe. (I agree this message can be confusing for a Windows, Node newbie.)
By the way, the Node.js Command Prompt is actually just an easy shortcut to cmd.exe.
Below is an example screenshot for installing grunt from cmd.exe:
Do not run the application using node.js icon.
Go to All Programmes->Node.js->Node.js command prompt.
Below is example screen shot.
If you're like me running in a restricted environment without administrative privileges, that means your only way to get node up and running is to grab the executable (node.exe) without using the installer. You also cannot change the path variable which makes it that much more challenging.
Here's what I did (for Windows)
- Throw node.exe into its own folder (Downloaded the node.exe stand-alone )
- Grab an NPM release zip off of github: https://github.com/npm/npm/releases
- Create a folder named: node_modules in the node.exe folder
- Extract the NPM zip into the node_modules folder
- Make sure the top most folder is named npm (remove any of the versioning on the npm folder name ie: npm-2.12.1 --> npm)
- Copy npm.cmd out of the npm/bin folder into the top most folder with node.exe
- Open a command prompt to the node.exe directory (shift right-click "Open command window here")
- Now you will be able to run your npm installers via:
npm install -g express
Running the installers through npm will now auto install packages where they need to be located (node_modules and the root)
Don't forget you will not be able to set the path variable if you do not have proper permissions. So your best route is to open a command prompt in the node.exe directory (shift right-click "Open command window here")
It's better to use the actual (msi) installer from nodejs.org instead of downloading the node executable only. The installer includes npm and makes it easier to manage your node installation. There is an installer for both 32-bit and 64-bit Windows.
Also a couple of other tidbits:
Installing modules globally doesn't do what you might expect. The only modules you should install globally (the
-g
flag in npm) are ones that install commands. So to install Express you would just donpm install express
and that will install Express to your current working directory. If you were instead looking for the Express project generator (command), you need to donpm install -g express-generator
for Express 4.You can use node anywhere from your command prompt to execute scripts. For example if you have already written a separate script:
node foo.js
. Or you can open up the REPL (as you've already found out) by just selecting the node.js (start menu) shortcut or by just typingnode
in a command prompt.
As mscdex said NPM comes with the nodejs msi installed file. I happened to just install the node js installer (standalone). To separately add NPM I followed following step
- Download the latest zip file of NPM from here.
- Extract it in the same file as that of node js installer.
- If you have added the directory containing to node js installer to PATH env variable then now even npm should be a recognized command.