如何获取/$bunfs/root对应的实际目录?Bun可执行文件目录问题
获取Bun打包后可执行文件的所在目录
当你把Bun项目打包成可执行文件后,想要获取该可执行文件的实际存放目录,可通过以下方式实现:
- 利用
process.execPath获取可执行文件的绝对路径,再用path.dirname()提取目录部分:import path from 'path'; const executionDirectory = path.dirname(process.execPath);
这个方法的核心逻辑是:process.execPath会返回当前运行的可执行文件的完整绝对路径,对其调用path.dirname()就能得到该文件所在的目录,基于这个路径就能正常访问相对目录下的文件。
对比你之前尝试的两种方法:
import.meta.dir在Bun打包后的可执行文件中,指向的是Bun虚拟文件系统的根目录(即/$bunfs/root),这是因为打包后的代码运行在Bun的虚拟环境中,和物理文件系统路径不对应。__dirname本身在ES模块场景下不推荐使用,且它指向的是源码文件所在目录,并非打包后可执行文件的目录。
内容的提问来源于stack exchange,提问作者Vess Bakalov
相关产品推荐
相关产品推荐

