javascript - 解析相对于另一个路径而不是当前工作目录的相对路径

标签 javascript node.js

我有一个如下所示的 Node.js 模块:

module.exports = function()
{
    // linked dependencies
    this.dependency1 = 'dependency1/dependency1.exe';
    this.dependency2 = 'dependency2/dependency2.exe';
    this.dependency3 = 'dependency3/dependency3.exe';
}

我希望开发人员能够轻松编辑依赖项的位置相对于模块文件本身。但是,在使用模块时,当前工作目录 process.cwd() 通常与模块目录不同,因此这些路径无法正确解析。 path.resolve() 似乎仅相对于当前工作目录起作用,并且没有任何允许自定义引用点/路径的参数。

我已经能够通过以下方式解决路径,但我发现它丑陋且麻烦,而且应该比这更容易:

this.ResolvePath = function(p)
{
    var cwd = process.cwd();
    process.chdir(path.dirname(module.filename));
    var resolvedPath = path.resolve(p);
    process.chdir(cwd);
    return resolvedPath;
}

有没有更简洁的方法来做到这一点?我觉得 path.relative() 应该包含解决方案,但我找不到让它工作的方法。或许将多个 path.relative() 链接在一起可能会奏效,但我现在无法理解它是如何工作的。

最佳答案

为什么不只是:

 path.resolve(__dirname, p)

__目录名 works a bit differently and returns the current modules path , 然后可以很容易地与相对路径连接。

关于javascript - 解析相对于另一个路径而不是当前工作目录的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52615764/

相关文章:

javascript - React setState排序方法

javascript - Bootstrap,销毁元素的下拉菜单

Javascript - 查找用户输入数字的中间值

javascript - Node.js 更改应用程序以使用集群模块

node.js - 我应该如何为嵌套文档建模 MongoDB 集合?

Android native 应用程序与跨平台应用程序

javascript - ajax 调用后脚本加载到哪里?

javascript - 如何访问嵌套在 div 中的表单数据(TypeScript)

node.js - 发布请求后重定向页面 [Express 4]

javascript - 在 Visual Studio Code(VS Code) 中调试 Protractor 测试