写入文件 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 模块时出现问题,显然路径位于根级别的主要内容,如果未能解决你的问题,请参考以下文章

在Firebase中执行文件写入功能时出现EROFS错误。

System.Xml.XmlException '根级别的数据无效,第 1 行,位置 1' 当我从 1 个 xml 文件更改为 5 时出现错误

python----日志模块loggin的使用,按日志级别分类写入文件

快速写入 JSON 文件时出现意外错误

写入原始文件时出现 FileNotFoundException

尝试写入文件时出现 FileNotFound 异常