写入文件 fs 模块时出现问题,显然路径位于根级别
Posted
技术标签:
【中文标题】写入文件 fs 模块时出现问题,显然路径位于根级别【英文标题】:Problem writing to file fs module, apparently the path is positioned at the root level 【发布时间】:2021-12-26 22:02:10 【问题描述】:我正在使用 typescript 练习,我想使用 fs 模块编写一个文件,但我不知道这是一个菜鸟问题还是我做错了什么,但我的项目看起来像这个:
根
-> dir(这里是 tsc 的 js 结果)
->src
--> 数据
---> 数据.json
--> 服务
---> service.ts
--> index.ts
-> package.json
-> tsconfig.json
在 service.ts 显然路径是:
let filePath = path.join('./','src','data','data.json') // this works
fs.writeFile(filePath, JSON.stringify(data,null,2), 'utf8', (err)=> if(err) return console.log(err);)
所以我不知道为什么路径定位在根级别
如果我尝试“../data/data.json”,我会收到 ENOENT ERROR no such file or directory
还好吗?
【问题讨论】:
【参考方案1】:具有相对路径的文件系统操作始终使用当前工作目录 - 这里解释了一个概念:https://en.m.wikipedia.org/wiki/Working_directory
当您运行 Node.js 时,您会在特定目录中执行此操作。例如,npm start
之类的脚本通常在存储库/项目的根目录中执行 - 这会导致所有相对路径从那里开始解析。但是请注意,这在生产中可能会有所不同 - Docker、PM2、systemd 或任何其他工具可以在不同的工作目录中运行您的脚本(这通常可以配置)。
要检查 Node.js 中的当前工作目录,请使用 https://nodejs.org/api/process.html#processcwd
也可以建立相对于 JS 文件目录的路径。本教程展示了如何做到这一点的各种示例:https://www.digitalocean.com/community/tutorials/nodejs-how-to-use__dirname
请务必记住,require()
使用相对于 __dirname 的路径,但 fs
解析相对于 CWD。p>
【讨论】:
以上是关于写入文件 fs 模块时出现问题,显然路径位于根级别的主要内容,如果未能解决你的问题,请参考以下文章
System.Xml.XmlException '根级别的数据无效,第 1 行,位置 1' 当我从 1 个 xml 文件更改为 5 时出现错误
python----日志模块loggin的使用,按日志级别分类写入文件