When I try to run the app.js file created by express, I get the following error:
$ node app.js
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'express'
at Function._resolveFilename (module.js:320:11)
When I type in 'express --version' I get a return statement of 2.3.3. I used npm to install express. I had to manually make npm using these instructions:
git clone http://github.com/isaacs/npm.git
cd npm
sudo make install
The error is Error: Cannot find module 'express'
.
Do I need to do something after installing npm and express in order to make express see the modules created by npm?
My node is version: 0.4.6 My express is version: 2.3.3 My npm is version: 1.0.6
Express is installed globally. I used the -g flag to install it.
Edit: When I try "node -e require.paths" I get:
[ '/home/user/.node_modules', '/home/user/.node_libraries', '/usr/local/lib/node' ]
So, node isn't detecting the npm installation. How do I get node to detect the npm installation?
for mac users
require.paths is removed, use the NODE_PATH environment variable instead.
Use local installs for require(), and global installs for command-line apps.
If you need both, use the
npm link
command.I installed
gulp
and when I ran thisgulp
command in the command line I got agulp: command not found
error. It appeared that it installedgulp
in my local folder that is/home/YOURUSERNAME/.node/lib/node_modules
and not in the globalnpm
folder.You can check
npm
root folder by running this command:npm root -g
, which was returning my personal directory/home/YOURUSERNAME/.node/lib/node_modules
and not the expected/usr/local/lib/node_modules
.You can fix this by running
npm config set prefix /usr/local
command.for all problems with express with a mac computer:
The solution is:
1.- chown to your user the .npm folder :
sudo chown -R Webmaste /Users/webmaste/.npm/
sudo npm install -g express@2.5.8
/usr/local/share/npm/bin/express
4: sudo cd . && npm install
5: finally:
node app
the final message in the console should look like this:
Express server listening on port 3000 in development mode
It appears that while npm had been updated to install global modules into /usr/local/lib/node_modules, Node's own require.paths does not yet reflect this change.
There are two reasonable solutions:
1.
Add the following code to the top of your application:Pro: non-invasive, easy to add
Con: requires discipline, future versions of node will restrict access to require.paths
2.
As root, execute:Pro: reasonably non-invasive
Con: requires root, modifies linux fs, might not survive system updates