代码之家  ›  专栏  ›  技术社区  ›  V. Rubinetti

相对于其他路径(而不是当前工作目录)解析相对路径

  •  1
  • V. Rubinetti  · 技术社区  · 6 年前

    我有一个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() 应该有解决办法,但我找不到办法让它发挥作用。可能是多个链接在一起 路径相对论() S可以工作,但我现在还不能全神贯注于它的工作方式。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Jonas Wilms    6 年前

    为什么不只是:

     path.resolve(__dirname, p)
    

    __dirname works a bit differently and returns the current modules path ,然后可以轻松地与相对路径连接。