当我们写require('some/directory')
时。
如果some/directory/index.js
是目录,它将查找some/directory
。
但是如果我想使用其他文件名_index.js
怎么办? (因此它可以在dir-tree中排除其兄弟文件。)
答案 0 :(得分:2)
默认文件名是index.js,但您可以通过package.json使用另一个文件。
在此文件中,您应该拥有密钥名称:
"main": "index",
替换您喜欢的任何名称,即使在另一个目录中:
"main": "./lib/index",
答案 1 :(得分:0)
这不可能。
默认文件名是硬编码的,根据以下内容应为index.js
或index.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;