Reputation: 29880
I have installed Node.js through the installer on their webpage and added it's path to my environment variable so I can use node
and npm
through the command line. If I make an express app, it works, but I have to create it manually.
This is fine I guess, but I was wondering why I can't use the express
command? I am getting
`express` is not recognized as an internal or external command, operable program or batch file.
I noticed that express installs in C:\Username\node_modules instead of where I thought it would go, in C:\Program Files\Nodejs\node_modules. Is this a problem?
Upvotes: 13
Views: 14442
Reputation: 43
Just want to add the following: instead of first installing it globally using:
npm install express -g
And then moving it, like the accepted answer says (which is just silly), just simply install it within node js:
npm install express
-g is for global, you want it locally so NodeJS can access it.
Upvotes: 0
Reputation: 801
In later versions of express comand line was migrated to a separate module: express-generetor
use
npm install -g express-generator@3
and could use the express command
Upvotes: 31
Reputation: 24566
Although this is not necessarily a problem, it's annoying and and error is an error even if you can navigate around it.
Although you can reference other node modules even if they are not in the node directory, as far as I understand node requires the modules to be in the node_modules
folder within the Nodejs
directory in order to automatically find them. (I had a similar issue on osx and this method solved it.)
Try moving the contents of
C:\Username\node_modules
into C:\Program Files\Nodejs\node_modules\
Alternatively,
You can also install modules globally with:
npm install express -g
which allows you to access them without having to worry about your node directory, although these are then more difficult to manage and "you should try to avoid if you can".
From the Node Blog:
Just like how global variables are kind of gross, but also necessary in some cases, global packages are important, but best avoided if not needed.
In general, the rule of thumb is:
If you’re installing something that you want to use in your program, using require('whatever'), then install it locally, at the root of your project. If you’re installing something that you want to use in your shell, on the command line or something, install it globally, so that its binaries end up in your PATH environment variable.
Resources
Upvotes: 5
Reputation: 24656
Installing node.js adds the C:\Users\\AppData\Roaming\npm\ directory to your PATH variable. If the global install is not working correctly then something must have accidentally removed it. Running a repair-install of node.js should fix this issue
Upvotes: 1
Reputation: 19841
You should install the express globally.
npm install express -g
Upvotes: 2