Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我是否需要在每个项目目录中安装express?_Node.js_Express - Fatal编程技术网

Node.js 我是否需要在每个项目目录中安装express?

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

我有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.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