相对文件的节点模块路径

Posted

技术标签:

【中文标题】相对文件的节点模块路径【英文标题】:Node Module path to relative files 【发布时间】:2020-05-21 22:02:30 【问题描述】:

所以我编写了一个短节点模块(module1)作为二进制文件(.exe)的包装器,可以通过命令行调用。

这就是我获取二进制文件路径以使用execFilePromised 执行 .exe 的方法。 它适用于我的模块 1。

const __dirname = fs.realpathSync('.');
const mpqEditorLocation = path.resolve(__dirname, './mpq/MPQEditor.exe');

问题: 当我将带有npm link ../<module1> 的module1 导入另一个节点项目时,路径未正确设置为.exe,因为它位于我的node_modules 文件夹中,而不是<otherproject>/mpq/MPQEditor.exe

如何使__dirname 相对于实际文件而不是项目执行目录?

【问题讨论】:

【参考方案1】:

所以我发现我的解决方案不使用 npm link!

请改用npm install <absolute path to your package>

我刚刚用pwd打印了我的位置,然后将其安装在那里。

这样我可以重构路径:

const mpqEditorLocation = path.resolve(__dirname, '..', 'mpq', 'MPQEditor.exe');

从那时起工作:)

【讨论】:

以上是关于相对文件的节点模块路径的主要内容,如果未能解决你的问题,请参考以下文章

为啥自动导入会为 PhpStorm/WebStorm 中的根节点模块生成相对路径

在Python中以绝对路径或者相对路径导入文件(或模块)的方法

文件路径和模块路径

模块之相对路径导入

289 node.js系统模块,相对路径绝对路径

json模块下abspath()查找文件绝对路径与join()路径嫁接获取相对路径的差别