我有一个从某人网站上下载的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 \目录中但我仍然收到错误。知道问题可能是什么以及如何解决?
答案 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
子目录中)。