node.js需要函数找不到模块

时间:2014-12-16 03:53:01

标签: node.js

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

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

C:\用户\ MYNAME \ node_modules \表达\

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

2 个答案:

答案 0 :(得分:1)

Node.js只会从当前(和父)目录中搜索模块。与npm不同,Node没有" global"模块。

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

答案 1 :(得分:1)

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

有关详细信息,请参阅http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders

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


仅供参考,如果您需要从项目目录加载模块,则必须使用

require("./filename");

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