【问题标题】:Do I need to install express in every project directory?我需要在每个项目目录中安装 express 吗?
【发布时间】:2014-07-03 19:53:32
【问题描述】:

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

我确认 express 在 node_modules 目录中:

root@myServer [/usr/local/lib/node_modules]# ls
./  ../  express/  express-generator/  forever/  n/  npm/  pm2/  supervisor/

我在 node.js 项目的顶级目录中发现了一些帖子,说明要安装 express。有没有办法不必在我拥有的每个项目中安装 express?应该有一种方法可以将其指向安装目录。 附加信息: 我在全球范围内安装了节点和快递。 我还安装了 express-generator 使用:npm install -g express-generator

顺便说一句:节点模块安装在此位置(不确定是否正确):/usr/local/lib/node_modules

我最终在本地安装,在阅读了有关 express local 与 global 安装的优缺点之后,如果我在本地安装 express 可能会更好。一旦我在本地安装它就可以成功运行。

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    节点模块查找算法如下所示(来自 Node.js in Action):

    因此,如果您在项目根目录的 node_modules 中安装了该模块,则可以在每个子目录和文件中找到该模块。正如您在图表的最后一点看到的,您可以通过设置 NODE_MODULES 环境变量来指定搜索目录。当您全局安装 express 时,它可能位于 /usr/local/bin/express 之类的地方。您可以在启动应用程序时设置 NODE_MODULES 目录

    NODE_MODULES=/usr/local/bin/ node app.js
    

    【讨论】:

    • 不错。这解释得很清楚。谢谢!此图非常有用,将来会派上用场。
    【解决方案2】:

    如您所料,您的问题确实有解决方案。

    您需要全局安装 express。那是你运行 npm install express 而不是运行:

    sudo npm install -g express

    • 需要 sudo 才能获得对全局位置的写入权限。
    • 标志-g 代表全局安装。您可以在任何模块上使用它。

    虽然这不是万能的,但某些项目可能需要非常特定的版本,因此无法选择单一安装。对于此类项目,您仍然必须在本地为项目安装 express。但在您的情况下,我相信进行全局安装就足够了。

    【讨论】:

    • 我已经用root用户完成了“sudo npm install -g express”,但不在项目目录中,仍然得到同样的错误。
    【解决方案3】:

    节点在目录层次结构中向上搜索包。

    一个荒谬的答案是这样做

    # cd /
    # npm install express
    

    这将设置 /node_modules ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多