节点需要目录而不是特定的文件

这两个陈述是否相同?

const deviceModule = require('..').device; const deviceModule = require('../device'); 

我认为需要一个模块(我们没有path)作为参数。 它是如何提供一个目录以及.device是做什么的?

感谢任何能够帮助我更好地理解node.js和javascript的人。

require('..').device需要父目录的index.js ,然后从该文件中获取device

所以,如果你有以下结构:

 - index.js - /foo - - bar.js 

index.js有以下几点:

 module.exports = { device: "baz" }; 

然后在bar.js require("..").device会给你"baz"


以下是加载目录的规范:

 LOAD_AS_DIRECTORY(X) 1. If X/package.json is a file, a. Parse X/package.json, and look for "main" field. b. let M = X + (json main field) c. LOAD_AS_FILE(M) 2. If X/index.js is a file, load X/index.js as JavaScript text. STOP 3. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP 4. If X/index.node is a file, load X/index.node as binary addon. STOP 

所以在你的例子中,它会:

  1. 查找package.json并获取main属性,然后加载它(如果存在)
  2. 如果第1步不存在,它将加载index.js如果存在)
  3. 如果第2步不存在,它将加载index.json如果存在)
  4. 如果第4步不存在,它将加载index.node如果存在)

您可以使用模块require-file-directory。

1-帮助要求只有名字的所有文件。 不需要给文件的绝对path。
2-一次有多个文件。