Node.js 我是否需要在每个项目目录中安装express?
我有centOS:当我尝试运行需要express的node.js应用程序时,我遇到以下错误:Node.js 我是否需要在每个项目目录中安装express?,node.js,express,Node.js,Express,我有centOS:当我尝试运行需要express的node.js应用程序时,我遇到以下错误: module.js:340 throw err; ^ Error: Cannot find module 'express' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.requi
module.js:340
throw err;
^
Error: Cannot find module 'express'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/var/www/tipsterPro/index.js:2:15)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
我在node.js项目的顶层目录中发现了几条关于安装express的帖子。有没有办法不必在我的每个项目中安装express?应该有一种方法将其指向安装目录。
其他信息:
我在全球范围内安装了node和express。
我还使用:npm安装-g express generator
安装了express generator
顺便说一句:节点模块安装在此位置(不确定是否正确):/usr/local/lib/node\u模块
在阅读了有关express local与global installation的优缺点之后,我最终在本地安装了express,如果我在本地安装express可能会更好。一旦我在本地安装,它就会成功运行。正如您所猜测的,您的问题确实有一个解决方案 您需要在全球范围内安装express。这不是运行
npm install express
而是运行:
sudo npm安装-g express
- sudo需要获得对全局位置的写访问权
- 标志
表示全局安装。您可以在任何模块上使用它-g
不过,这并不是万能的,有些项目可能需要非常特定的版本,因此无法选择单次安装。对于此类项目,您仍然必须在本地为项目安装express。但在您的情况下,我相信有一个全局安装就足够了。节点模块查找算法如下所示(来自node.js): 因此,如果您将模块安装在项目根目录下的node_modules中,它将出现在每个子目录和文件中。如图的最后一点所示,可以通过设置NODE_MODULES环境变量来指定搜索目录。当您全局安装express时,它可能位于类似于
/usr/local/bin/express
的位置。您可以在使用启动应用程序时设置NODE_MODULES目录
NODE_MODULES=/usr/local/bin/ node app.js
节点在目录层次结构中向上搜索包 一个荒谬的答案是这样做
# cd /
# npm install express
这将设置/node_modules…我已经用root用户完成了“sudo npm安装-g express”,但不在项目目录中,仍然得到相同的错误。很好。这解释得很清楚。非常感谢。这个图表非常有用,将来也会有用的。
# cd /
# npm install express