假设我的项目根目录下有一个名为file.xml
.
假设我在tests/中有一个名为“test.js”的测试文件,它有
const file = fs.readFileSync("../file.xml");
如果我现在跑步node ./tests/test.js
从我的项目的根源来看,它说../file.xml
不存在。如果我从测试目录中运行相同的命令,那么它就可以工作。
它似乎fs.readFileSync
相对于调用脚本的目录,而不是相对于脚本实际所在的目录。如果我写fs.readFileSync("./file.xml")
in test.js
它看起来会更混乱,并且与相对路径不一致require
与文件相关的语句。
为什么是这样?我怎样才能避免重写我的路径fs.readFileSync
?
您可以解析相对于源文件位置的路径 - 而不是当前目录 - 使用path.resolve https://nodejs.org/docs/latest/api/path.html#path_path_resolve_paths:
const path = require("path");
const file = fs.readFileSync(path.resolve(__dirname, "../file.xml"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)