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

时间:2016-11-14 16:37:22

标签: javascript node.js syntax

这两个陈述是否相同?

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

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

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

感谢所有能帮助我更好地理解node.js和javascript的人。

2 个答案:

答案 0 :(得分:4)

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

所以如果你有以下结构:

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

index.js具有以下内容:

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

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

Here is the specification for loading a directory:

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(如果存在)

答案 1 :(得分:0)

您可以使用module require-file-directory。

1-帮助仅要求所有文件都带有名称。无需提供文件的绝对路径 2-一次多个文件。