【问题标题】:node.js require function not finding modulenode.js需要函数找不到模块
【发布时间】:2015-02-14 07:52:02
【问题描述】:

我有一个从某人的网站下载的 server.js 文件。第一行是:var express=require('express');

当我尝试使用“node server.js”运行此服务器时,我收到以下错误:“找不到模块 'express'。” express 模块安装在默认节点安装位置:

C:\Users\myname\node_modules\express\

我可以通过从 node_modules 中的 express 安装位置执行“node express.js”来成功运行 express。我还尝试将 express 文件夹和文件复制到我的 server.js 文件所在的 c:\node-testing\ 目录中,但仍然出现错误。知道问题可能是什么以及如何解决吗?

【问题讨论】:

    标签: node.js


    【解决方案1】:

    你可以设置NODE_PATH环境变量,告诉nodejs去其他路径搜索全局安装的不在项目目录下的模块。

    详情请见http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders

    在 Unix 安装中有一些内置的默认位置,但在 Windows 上,您似乎必须手动设置此环境变量以支持全局位置。


    仅供参考,如果你想从项目目录加载一个模块,那么你必须使用

    require("./filename");
    

    前面有./。这就是为什么将它复制到项目目录时它不起作用的原因。 node 区分了从项目目录加载与从下面的 node_modules 目录加载,因此需要不同的语法来指定您想要的。 Express.js 也不是一个独立的模块,因为它依赖于一堆其他模块,所以你不能只复制它。我建议使用 NODE_PATH 选项或将 express 安装到您的项目目录中(最终会在 node_modules 子目录中)。

    【讨论】:

      【解决方案2】:

      Node.js 只会在当前(和父)目录中搜索模块。与 npm 不同,Node 没有“全局”模块的概念。

      您需要运行npm install 以将您的模块安装到包含您的代码的目录中。

      【讨论】:

      • 这不太正确。您不必将节点模块安装到应用程序的 Director 中。设置正确的环境变量后,节点将在其他位置查找(就像在 Linux 上一样)。
      • 此处详细了解如何从其他位置加载:nodejs.org/api/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 2011-07-14
      • 1970-01-01
      • 2013-05-15
      • 2020-02-28
      • 1970-01-01
      相关资源
      最近更新 更多