我有一个 NodeJS 模块,它在特定目录中的文件系统上做了很多工作。我希望模块内的所有文件系统操作都相对于该目录完成 - (我们称之为/home/me/data
)。
我意识到我可以用process.chdir("/home/me/data");
更改当前的工作目录,但这会弄乱使用我的模块的任何其他模块的工作目录。
有没有办法让子模块具有与其父模块不同的工作目录?
我不想将变量传递给每个子模块以附加到fs.readFile(filepath);
调用的文件路径。
有什么优雅的方法可以实现这一点吗?
附言子进程生成/分叉在这里不合适。
No.在 unix 中,cwd 是每个进程一个。通常,显式引用cwd
的代码通常会被误导。它只对某些实用程序有意义,例如git
,即便如此,操作系统也会相对于您的绝对转换进行处理。您是否考虑过使用path.resolve
扩展路径,以便在将它们传递给相关模块之前它们是绝对的?
NPM 上的"相对 fs"模块是一种解决方案 https://www.npmjs.com/package/relative-fs - 它包装 fs 库以使其方法相对于给定目录。
免责声明:我还没有真正使用它。