当我尝试运行express创建的app.js
文件时,出现以下错误:
$ 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)
当我输入express --version
时,我收到2.3.3
的退货声明。我使用npm来安装express。我不得不使用这些说明手动制作npm:
git clone http://github.com/isaacs/npm.git
cd npm
sudo make install
错误为Error: Cannot find module 'express'
。
在安装npm和express之后我是否需要做一些事情才能让Express看到npm创建的模块?
Express全局安装。我使用-g
标志来安装它。
修改:当我尝试"node -e require.paths"
时,我得到了:
[ '/home/user/.node_modules',
'/home/user/.node_libraries',
'/usr/local/lib/node' ]
因此,节点未检测到npm安装。如何让节点检测npm安装?
答案 0 :(得分:68)
安装快递
npm install -g express
制作新应用
express your_app
进入app目录
cd your_app
使用npm链接解析模块
npm link express
答案 1 :(得分:27)
对require()使用本地安装,对命令行应用程序使用全局安装。
如果您需要两者,请使用npm link
命令。
答案 2 :(得分:20)
在Ubuntu 12.04上,您必须将export NODE_PATH=/usr/local/lib/node_modules
添加到/.bashrc以使用全局安装的模块。
答案 3 :(得分:15)
似乎在更新npm以将全局模块安装到/usr/local/lib/node_modules
时,Node自己的require.paths
尚未反映此更改。
有两种合理的解决方案:
将以下代码添加到应用程序的顶部:
require.paths.push('/usr/local/lib/node_modules');
Pro:非侵入性,易于添加
Con:需要纪律,未来版本的节点将限制对require.paths
的访问
以root身份执行:
ln -s /usr/local/lib/node_modules /usr/local/lib/node
专业:合理的非侵入性
Con:需要root,修改linux fs,可能无法在系统更新中存活
答案 4 :(得分:8)
我遇到了同样的问题。这对我有用:
好像是npm(现在?)将节点模块安装到/usr/local/lib/node_modules/
而不是/usr/local/lib/node/
我所做的只是将所有内容从node_modules复制到节点:sudo cp -r /usr/local/lib/node_modules/* usr/local/lib/node/
,现在它似乎对我有效。
希望这可以帮助你: - )
答案 5 :(得分:6)
.bashrc 或 .bash_profile 中的NODE_PATH=/usr/local/lib/node_modules
怎么样?我认为这是真正正确的方法。
答案 6 :(得分:2)
如果您正在使用Windows,可能会发生环境变量NODE_PATH
未设置,因此当您执行node fileName.js
时,它将找不到库。
检查控制台上的变量,如果不存在,则创建它。为其指定NODE_HOME\node_modules
值,其中NODE_HOME
是您的节点安装目录。这条路径是npm install在下载时放置每个模块的地方。
答案 7 :(得分:2)
设置NODE_PATH=NODE_HOME\node_modules
。
我正在使用Windows 7,它运行正常。
答案 8 :(得分:2)
require.paths
已删除,请改用NODE_PATH
环境变量。
答案 9 :(得分:1)
看起来最简单的方法是从应用的文件夹中运行npm install
。这告诉npm将所有内容挂钩。
这是express <appname>
之后的最后一条指令:
...
dont forget to install dependencies:
$ cd <appname> && npm install
答案 10 :(得分:0)
对于使用mac计算机表达的所有问题:
解决方案是:
chown
向您的用户提供.npm文件夹:
sudo chown -R Webmaste /Users/webmaste/.npm/
在您的测试文件夹或文件夹中:
sudo npm install -g express@2.5.8
从您的实际位置调用快递:
/usr/local/share/npm/bin/express
sudo cd . && npm install
最后:
node app
控制台中的最终消息应如下所示:
Express server listening on port 3000 in development mode
答案 11 :(得分:0)
对于mac用户
cd /usr/local/lib/node
sudo ln -s ../node_modules/* ./$1
答案 12 :(得分:0)
我安装了gulp
,当我在命令行中运行此gulp
命令时出现gulp: command not found
错误。它似乎在gulp
的本地文件夹中安装了/home/YOURUSERNAME/.node/lib/node_modules
,而不是在全局npm
文件夹中。
您可以通过运行以下命令检查npm
根文件夹:npm root -g
,它返回我的个人目录/home/YOURUSERNAME/.node/lib/node_modules
而不是预期的/usr/local/lib/node_modules
。
您可以通过运行npm config set prefix /usr/local
命令来解决此问题。
答案 13 :(得分:0)
最后使用Linux,一个好方法是使用命令:sudo apt-get install node-express
但是对于快递4,我们必须使用快速生成器制作应用程序框架,使用&nbsp install express-generator -g&#39;安装它,然后运行“表达myapp&#39;命令。 另见install express