Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 为什么从另一个目录中的文件请求(“模块”)失败?_Node.js_Npm - Fatal编程技术网

Node.js 为什么从另一个目录中的文件请求(“模块”)失败?

Node.js 为什么从另一个目录中的文件请求(“模块”)失败?,node.js,npm,Node.js,Npm,当我执行节点myfile.js时,我得到一个错误,没有找到模块。我检查了模块。路径如下: $ node > module.paths 显示模块安装的路径,我可能需要模块: $ node > require("the-module") 因此,我将console.log(module.path)添加到myfile.js以查看module.path是否相同。事实并非如此 发生了什么事 编辑: 这有点复杂 模块路径不同,但这似乎不是问题所在。安装模块的路径在列表中 当我在myfile.

当我执行
节点myfile.js
时,我得到一个错误,没有找到模块。我检查了
模块。路径
如下:

$ node
> module.paths
显示模块安装的路径,我可能需要模块:

$ node
> require("the-module")
因此,我将
console.log(module.path)
添加到
myfile.js
以查看
module.path
是否相同。事实并非如此

发生了什么事


编辑: 这有点复杂

模块路径不同,但这似乎不是问题所在。安装模块
的路径在列表中

当我在
myfile.js
中添加
require(“模块”)
时,它会按预期工作。然而,我确实
require(“c:/path to/other file.js”)
并且从那里我做了另一个
require(“模块”)
。这一要求失败了


编辑2:
module.path
other file.js
是不同的。为什么?(安装模块的路径不在此列表中。)

您可以看到当未指定完整路径时,
require()
如何加载文件的所有规则

当您只指定一个文件名时,如在
require(“模块”)
中所述,node.js会在加载当前调用的
require()
模块的目录下的node\u modules子目录中查找。通过这种方式,模块可以拥有自己的依赖项集,并且可以相对于自己的目录加载依赖项集,而无需考虑它在文件系统中的位置

因此,如果您从
c:\myprojects\team\module1
中调用
require()

类似地,任何以
/
开头的路径都是相对于同一目录的,但允许您引用同一目录中的文件

node.js不会将路径动态添加到搜索路径列表中。听起来你有一种期望,当你访问不同的目录时,它们会以某种方式自动添加到搜索路径中。这就是它的工作原理。
require()
查找相对路径的位置规则都已详细说明

另外,请记住,在所有node.js中,不仅仅只有一个
模块
变量。在node.js中加载的每个文件中都有一个不同的路径,因此
模块中的路径很可能不同。实际上,大多数node.js开发人员从未以任何方式使用
module.path
。如果您只需遵循
require()
的相对路径工作规则,您将得到您所期望和需要的