gpt4 book ai didi

node.js - 触摸文件,然后在 Node 中写入它

转载 作者:太空宇宙 更新时间:2023-11-04 01:00:43 25 4
gpt4 key购买 nike

如何在写入文件之前对其进行触摸?

尝试

fs   = require 'fs'
os = require 'os'
path = require 'path'


json_filepath = path.join os.tempdir(), 'cache', 'foo.json'

module.exports = (cb) ->
fs.open json_filepath, 'w', 438, (err) -> # Touch, also tried with node-touch
return cb err if err?
fs.writeFile json_filepath, {foo: 'bar'}, {}, (err) ->
#console.error 'Error writing cache: ', err
cb err

错误

{ [Error: ENOENT, open '/tmp/cache/foo.json']
errno: 34,
code: 'ENOENT',
path: '/tmp/cache/foo.json' }

这是一个 POSIX 错误( linux manpage ,另外针对 Windows 实现,例如: in libuv )。这意味着:没有这样的文件或目录

最佳答案

为什么在调用fs.writeFile()之前尝试打开文件?这是错误的过程,并且可能至少会导致您的部分问题。

您应该只调用fs.writeFile()。这将在一次调用中创建文件、写入文件并关闭所有文件。首先以 w 模式打开文件可能会导致与 fs.writeFile() 发生冲突,因为该文件已经打开以在其他地方写入。此外,您永远不会关闭打开的文件,从而泄漏文件句柄。

只需调用fs.writeFile(),无需事先调用fs.open()。这就是 fs.writeFile() 的编写方式。一个函数调用即可完成所有操作。

如果在删除 fs.open() 后仍然收到 ENOENT 消息,并且清除了所有孤立文件句柄,那么剩下的问题可能是您的路径不存在,或者您对该路径没有适当的权限。

仅供引用,指定的路径:

path.join(os.tempdir(), "cache")

不会自动存在。那必须是您创建的东西。

关于node.js - 触摸文件,然后在 Node 中写入它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26966899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com