NodeJS 需要('..')?

use*_*885 5 require node.js

我一直在查看一些 NodeJS 示例,但遇到了以下问题:

var module = require('..');
var module = require('../');
Run Code Online (Sandbox Code Playgroud)

我明白 require 是做什么的,但我不明白当它这样写时它会做什么。有人可以向我解释一下吗?

Ant*_*y C 5

这是https://nodejs.org/api/modules.html中定义的规则

require(X) 来自路径 Y 处的模块

  1. 如果 X 以“./”或“/”或“../”
    开头 LOAD_AS_FILE(Y + X)
    b.LOAD_AS_DIRECTORY(Y + X)

由于../or..不是文件,因此它将转到路径 B,以目录形式加载

LOAD_AS_DIRECTORY(X)

  1. 如果 X/package.json 是一个文件,则
    a. 解析 X/package.json,并查找“main”字段。
    b. 让 M = X + (json 主字段)
    c. 加载文件(M)
  2. 如果 X/index.js 是一个文件,则将 X/index.js 作为 JavaScript 文本加载。停止
  3. 如果 X/index.json 是一个文件,则将 X/index.json 解析为 JavaScript 对象。停止
  4. 如果 X/index.node 是一个文件,则将 X/index.node 作为二进制插件加载。停止

根据该规则,它将按此顺序检查以下文件

1)../package.json

2)../index.js

3)../index.json

4)../index.node