【发布时间】:2015-12-24 18:54:25
【问题描述】:
我有一个 NodeJS 服务器应用程序。我的日志记录有这行代码:
fs.writeFileSync(__dirname + "/../../logs/download.html.xml", doc.toString());
有时它可以正常工作,但在重负载下会出现此异常:
Error: UNKNOWN, unknown error 'download.html.xml'
PS:我在这里找到了一个链接:http://www.daveeddy.com/2013/03/26/synchronous-file-io-in-nodejs/ Blogger 描述 writeFileSync 在返回时并没有真正完成写入。有没有正确的同步方式,即没有回调?
【问题讨论】:
-
你认为什么是“正确的”?
-
为什么不想使用回调?执行同步操作会阻塞事件循环,而且由于您的应用负载过重,情况尤其糟糕。
-
@stiv 真的需要那么多重构吗?从长远来看,这可能是值得的。使用 writeFileSync 没有利用 javascript 的强大功能,也不允许您优雅地处理此问题。
-
你说这需要大量的重构,现在没有资源。您可以通过丢弃原始的
writeFileSync并让它异步工作来覆盖writeFileSync,然后及时平滑迁移并在完成后回滚该功能。 -
@Stepan Yakovenko 你想让我把它放在回复中吗?如果它解决并可以帮助将来的搜索...
标签: javascript node.js synchronization fs