我有一个 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)
__dirname
工作方式有点不同并返回当前模块路径 https://stackoverflow.com/questions/9874382/whats-the-difference-between-process-cwd-vs-dirname,然后可以轻松地将其与相对路径连接起来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)