假设我的项目根目录中有一个名为 file.xml
的文件。
假设我在 tests/ 中有一个名为“test.js”的测试文件,它有
const file = fs.readFileSync("../file.xml");
如果我现在从项目的根目录运行 node ./tests/test.js
它会说 ../file.xml
不存在。如果我从测试目录中运行相同的命令,那么它可以工作。
似乎 fs.readFileSync
与调用脚本的目录相关,而不是脚本实际所在的目录。如果我在 fs.readFileSync("./file.xml")
test.js
它看起来会更加混乱,并且与 require
语句中的相对路径不一致,该语句是文件相关的。
为什么是这样?如何避免重写 fs.readFileSync
中的路径?
原文由 Arman 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
path.resolve
解析相对于源文件位置的路径 - 而不是当前目录 -