node.js - 我可以在不使用 process.chdir() 的情况下更改 require( )'d module' s cwd )

标签 node.js module npm chdir

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

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

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

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

P.s.子进程生成/ fork 在这里不合适。

最佳答案

没有。 cwd 在 UNIX 中是每个进程一个。一般来说,在中显式引用cwd的代码通常会被误导。它仅对某些实用程序(例如 git)有意义,即使如此,操作系统也会为您处理相对于绝对的转换。您是否考虑过使用 path.resolve 扩展路径,以便在将它们传递到相关模块之前它们是绝对的?

关于node.js - 我可以在不使用 process.chdir() 的情况下更改 require( )'d module' s cwd ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240581/

相关文章:

node.js - 如何使用 bot 框架模拟器连接到 LivePerson 代理中心

c++ - Node native 模块 - 链接静态库

perl - 我使用什么 Perl 模块从 Windows 上的相对路径获取绝对路径(包括文件名)?

node.js - 使用 'npm'时需要登录github

javascript - 如何从其他 npm 依赖项导入模块依赖项?

javascript - 在 Node.js 中使用 Express 渲染数组中的每个对象

javascript - 在socket io中的事件回调函数中获取事件名称

javascript - 如何组织 Angular 模块依赖关系

python - 如何将多个 python 文件组织成一个模块而不像一个包?

javascript - 单元测试 Vue 组件 - Jest 设置 - 意外的标识符错误