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.resolve
parsing相对于源文件的位置而不是当前目录的path.resolve
。
const path = require("path"); const file = fs.readFileSync(path.resolve(__dirname, "../file.xml"));