自己的功能的相对“路径”(根据需要表现)

时间:2017-03-09 20:52:54

标签: javascript node.js

节点,众所周知,它具有require功能。使用相对路径调用此函数时。相对路径基于在您的通话位置。这是怎么做到的?

我想创建一个读取文件的函数,该函数也具有相同的行为。当我向它传递相对路径时,路径将根据呼叫的位置确定。

所以,基本上我正在寻找的是将readFile("./my_file.txt")作为readFile(__dirname + "/my_file.txt")来解释为__dirname

我当然可以随时添加require,但我正在尝试消除它,我很好奇{{1}}是如何做到的。

3 个答案:

答案 0 :(得分:0)

我在我的主app.js中定义了以下方法:

global.rootRequire = function(name) {
    return require(__dirname + '/' + name);
}

然后在我可以使用的各种其他文件中:

const data = rootRequire('services/data');

答案 1 :(得分:0)

您应该使用process.cwd()方法,因为它完全符合您的要求。像@MattB建议的功能,但替换__dirname

function relativeRequire (name) {
    return require(process.cwd() + '/' + name);
}    

const data = rootRequire('services/data');

答案 2 :(得分:0)

似乎Wrap require in Node.js which can resolve relative path call中的答案是有效的。在被调用的函数中获取堆栈跟踪,然后确定调用者文件所在的位置。

不太喜欢那种解决方案,可能不会使用它。但它是有效的。随意提出更好的方法。

相关问题