【发布时间】:2021-04-26 15:43:32
【问题描述】:
我正在开发一个跨平台 NodeJS 服务器/应用程序,它以预构建二进制文件的形式分发,使用 pkg (https://www.npmjs.com/package/pkg) 构建,适用于 Windows、Mac 和 Linux。
在启动时,应用程序应该为应用程序目录生成一个默认的config.json。我正在检测应用程序的当前启动文件夹:
var startUpPath = process.cwd();
这适用于 Windows 和 Linux,但在 macOS 上会失败,而是将文件生成到用户的主目录。
关于 macOS 的进一步说明:
- 当使用
node myApp.js运行源代码时,此工作 - 当使用
./myApp从命令行运行二进制文件时,此工作 - 当
myApp在Finder 中双击启动时,此失败
根本原因似乎是macOS进程总是在主目录中启动,而不是在当前目录...?
我确定这是微不足道的,但还没有弄清楚。
这里有什么建议吗?
【问题讨论】:
-
process.cwd()是您启动 Node 应用程序的目录。 Finder 只是假设用户的主目录。你能用__dirname吗?这是任何给定节点源文件的目录。 -
__dirname没有帮助,不幸的是。它提供了pkg文件系统的/snapshot/文件夹,而不是实际的物理路径。
标签: javascript node.js macos