fs.readFileSync不是文件相对的? Node.js的

– 假设我在我的项目的根目录中有一个名为“file.xml”的文件

– 假设我有一个testing文件在testing/称为“test.js”,它已经

const file = fs.readFileSync("../file.xml"); 

如果我现在从我的项目的根目录运行node ./tests/test.js它说../file.xml不存在。 如果我从testing目录中运行相同的命令,那么它的工作原理。

看起来fs.readFileSync是相对于脚本被调用的目录,而不是脚本的实际位置。 如果我在fs.readFileSync("./file.xml")写了fs.readFileSync("./file.xml") ,它看起来会更混乱,并且与require语句中的相对path不一致,这些path是文件相对的。

为什么是这样?

我怎样才能避免重写我的fs.readFileSync中的path?

您可以使用path.resolveparsing相对于源文件的位置而不是当前目录的path.resolve

 const path = require("path"); const file = fs.readFileSync(path.resolve(__dirname, "../file.xml"));