1

我有一个 NodeJS 模块,它在特定目录中的文件系统上做了很多工作。我希望模块内的所有文件系统操作都相对于该目录完成 - (我们称之为/home/me/data)。

我意识到我可以更改当前的工作目录,process.chdir("/home/me/data");但这会弄乱正在使用我的模块的任何其他模块的工作目录。

有没有办法让子模块具有与其父模块不同的工作目录?
我不想将变量传递给要附加到调用文件路径的每个子模块。fs.readFile(filepath);

有什么优雅的方法可以实现这一目标吗?

Ps 子进程生成/分叉在这里不合适。

4

2 回答 2

0

不。 cwd 在 unix 中是每个进程一个。通常,明确引用cwdin 的代码通常会被误导。它只对某些实用程序有意义,例如git,即使这样,操作系统也会为您处理相对于绝对转换的问题。在将它们传递给相关模块之前,您是否考虑过扩展您的路径path.resolve以便它们是绝对的?

于 2015-05-14T15:20:32.863 回答
0

NPM 上的“relative-fs”模块是一种解决方案https://www.npmjs.com/package/relative-fs - 它包装 fs 库以使其方法相对于给定目录。

免责声明:我还没有真正使用它。

于 2015-05-14T16:39:33.403 回答