gpt4 book ai didi

javascript - Node.js - 如何获得相对需要的路径?

转载 作者:行者123 更新时间:2023-11-29 21:46:25 24 4
gpt4 key购买 nike

我有一个像这样工作的模块:

/helpers/importer/Import.js

function importer(requiredModulePath, toImport) {
requiredModulePath = requiredModulePath.replace('{env}', browser.params.env);
var requiredModule = require(requiredModulePath);

return requiredModule[toImport] || requiredModule.default || requiredModule;
}

module.exports = importer;

我用它来动态导入模块属性,例如下面的“URLs”模块:

/example/URLs.js

module.exports = {
default: 'http://google.com',
a: 'http://a.com',
b: 'http://c.com'
};

我是这样做的:

/example/myExecutingModule.js

var Import = require('../helpers/importer/Import');
//var URL = Import('./URLs'); //This path does not work
var URL = Import('../../example/URLs'); //This path does work, as the URL is relative to Import.js
[ ... ]

我的问题是,与堆栈溢出中的其他人不同,他们希望在他们的需求中使用绝对路径,而我想要相反的东西。我想为我的 Import 函数提供与我将提供给 require 相同的路径——与 myExecutingModule.js 相关的路径,在本例中为:'./URLs'。但是,似乎我的“导入器”函数已经关闭了与其路径相关的“require”函数。有没有什么办法可以让“require”相对于调用 importer() 的模块?当我输入这个时,感觉唯一的方法就是将“require”传递给 Import.js 模块,我觉得这有点……荒谬

编辑:在进一步思考之后,我猜测答案涉及为调用模块的 require 函数提供 Import 闭包,如下所示:

var Import = require('../helpers/Import')(require);

然后在 Import.js 中导出

module.exports = function (require) { [...] return importer; };

使导入函数中的“require”成为调用模块本应使用的实际 require 函数。我还没有尝试过这个,我正在等待更好的答案,所以我暂时保留这个问题

最佳答案

您可以使用 __dirname 设置为当前模块所在的目录。例如:__dirname + '/URLs'

关于javascript - Node.js - 如何获得相对需要的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31038663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com