Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 相对的;路径“;用于自身功能(根据需要行为)_Javascript_Node.js - Fatal编程技术网

Javascript 相对的;路径“;用于自身功能(根据需要行为)

Javascript 相对的;路径“;用于自身功能(根据需要行为),javascript,node.js,Javascript,Node.js,正如大家所知,节点具有require功能。使用相对路径调用此函数时。相对路径基于您呼叫的位置。这是怎么做到的 我想做一个函数来读取一个文件,它也有同样的行为。当我给它传递一个相对路径时,路径是根据调用的位置确定的 因此,基本上我要寻找的是一个调用readFile(“./my\u file.txt”)被解释为readFile(\uu dirname+“/my\u file.txt”) 当然,我可以一直添加\uuu dirname,但我正在尝试消除这一点,我很好奇要求如何做到这一点。我在我的主app

正如大家所知,节点具有
require
功能。使用相对路径调用此函数时。相对路径基于您呼叫的位置。这是怎么做到的

我想做一个函数来读取一个文件,它也有同样的行为。当我给它传递一个相对路径时,路径是根据调用的位置确定的

因此,基本上我要寻找的是一个调用
readFile(“./my\u file.txt”)
被解释为
readFile(\uu dirname+“/my\u file.txt”)


当然,我可以一直添加
\uuu dirname
,但我正在尝试消除这一点,我很好奇
要求
如何做到这一点。

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

global.rootRequire = function(name) {
    return require(__dirname + '/' + name);
}
然后在我可以使用的各种其他文件中:

const data = rootRequire('services/data');
您应该使用这个方法,因为它正是您想要的。类似@MattB建议的函数,但替换
\uu dirname

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

const data = rootRequire('services/data');
看来答案是可行的。在调用的函数中获取堆栈跟踪,然后确定调用者文件所在的位置


不太喜欢这个解决方案,可能不会使用它。但这是一个有效的方法。请随意提出更好的建议。

执行
require('./path')
require(uu dirname+'/path')相同。
我知道。但是有了require,我就不必编写
\uuuu dirname
,我想知道是否有可能创建一个自己的函数,而不需要每次都添加
\uu dirname
。也许我的问题不太清楚。但这是相对于文件的路径,而不是执行它的路径。cwd()是执行原始脚本的路径吗?这不一定是我现在的文件。是的,我想这正是你想要的。我想你应该解释一下你的问题……如果我向require函数传递一个相对路径,它会从调用require的文件中看到相对路径。我基本上希望我自己的功能。因此,如果我用相对路径调用我的“readFile”,它应该是从我调用的文件开始的相对路径。无需在通话中添加_udirname。