Node.js可以使用另一个文件名作为目录索引文件,而不是`index.js`吗?

时间:2017-06-28 14:13:21

标签: node.js

当我们写require('some/directory')时。

如果some/directory/index.js是目录,它将查找some/directory

但是如果我想使用其他文件名_index.js怎么办? (因此它可以在dir-tree中排除其兄弟文件。)

4 个答案:

答案 0 :(得分:2)

默认文件名是index.js,但您可以通过package.json使用另一个文件。

在此文件中,您应该拥有密钥名称

  "main": "index",

替换您喜欢的任何名称,即使在另一个目录中:

  "main": "./lib/index",

请参阅https://docs.npmjs.com/files/package.json

答案 1 :(得分:0)

这不可能。

默认文件名是硬编码的,根据以下内容应为index.jsindex.node

https://nodejs.org/api/modules.html#modules_folders_as_modules

答案 2 :(得分:0)

它是硬编码在节点核心内部的,您可以在这里看到它的运行情况: https://github.com/nodejs/node/blob/master/lib/internal/modules/cjs/loader.js#L224

正如在文档中所述,首先尝试从node_modules获取该软件包,如果没有这样的软件包-尝试从该文件夹的index.js获取该软件包,并且最后一种尝试是打开指定的(如果任何)该文件夹中的package.json。如果未找到-它会失败并显示错误,指出没有这样的模块

答案 3 :(得分:0)

对我有用的超级简单解决方案:

someFileYouWantAsIndex.js

// ...code
// ...code
module.exports = { whatever };

index.js

const stuff = require('./someFileYouWantAsIndex.js');
module.exports = stuff;