node.js中require()的路径参数



我正在学习node.js

例如,我尝试

var server = require("./myserver.js");  

var server = require("./myserver");  

为什么两者都有效?这种东西叫什么?

如果查看require-函数的节点源代码,可以看到requireload-函数调用函数findLongestRegisteredExtension来确定文件扩展名。如果无法确定扩展,此函数将返回.js作为其默认值:

function findLongestRegisteredExtension(filename) {
const name = path.basename(filename);
let currentExtension;
let index;
let startIndex = 0;
while ((index = name.indexOf('.', startIndex)) !== -1) {
startIndex = index + 1;
if (index === 0) continue; // Skip dotfiles like .gitignore
currentExtension = name.slice(index);
if (Module._extensions[currentExtension]) return currentExtension;
}
return '.js';
}

这就是为什么同时使用require("./myserver.js");require("./myserver");将解析相同的模块。

最新更新