Javascript node.js中的require(../)是如何工作的?

Javascript node.js中的require(../)是如何工作的?,javascript,node.js,Javascript,Node.js,node.js遇到var foo=require(../)时会查找哪些模块 看起来它会在目录1中查找,而不是当前目录,但是它会查找和执行什么操作呢 也许C语言中的include与Python中的import有相似之处 我从node.js开始阅读 在github上出现了示例代码,例如 var express = require('express') , tracker = require('../') 这段代码似乎分配了express模块(文件)的变量express内容,在使用npm安装ex

node.js遇到var foo=require(../)时会查找哪些模块

看起来它会在目录1中查找,而不是当前目录,但是它会查找和执行什么操作呢

也许C语言中的include与Python中的import有相似之处

我从node.js开始阅读 在github上出现了示例代码,例如

var express = require('express')
  , tracker = require('../')
这段代码似乎分配了express模块(文件)的变量express内容,在使用npm安装express后,其路径必须是全局的,这似乎是可以理解的,尽管我知道有两种类型的模块安装,但这是另一个问题


但分配给变量跟踪器的内容是什么?

这取决于该目录中的内容

如果X以“/”或“/”或“../”开头

a。作为文件加载(Y+X)
B将_加载为_目录(Y+X)

加载为文件(X):

  • 如果X是一个文件,则将X作为JavaScript文本加载。停止
  • 如果X.js是一个文件,则将X.js作为JavaScript文本加载。停止
  • 如果X.node是一个文件,则将X.node作为二进制加载项加载。停止
  • 加载为目录(X):

  • 如果X/package.json是一个文件,
    A.解析X/package.json,并查找“main”字段。
    B设M=X+(json主字段)
    c加载为文件(M)
  • 如果X/index.js是一个文件,则将X/index.js作为JavaScript文本加载。停止
  • 如果X/index.node是一个文件,则将X/index.node作为二进制加载项加载。停止

  • express
    不必是全局安装的模块,这通常需要
    样式。我的猜测是,
    require('../')
    将位于当前模块的目录之上,尽管我不知道在什么情况下它会在那里找到一个。签出
    require('../')
    ,签出
    require('express')
    ,签出
    npm
    ,表示“我知道有两种类型的模块安装”