javascript - NodeJS - 写入文件有时会完成

标签 javascript node.js

我有一个电子应用程序,在其中我正在写入一个文件。

if( fs.existsSync(envFilepath) ) {
    envFile = fs.createWriteStream(envFilepath)

    var envs = document.getElementById("envs").value.split(",")
    envs.forEach( function(env) {
        if( env && env.localeCompare(" ") !== 0 ) {
            env = env.trim()
            envFile.write(env + '\n')
        } 
    })

    envFile.end()

    envFile.on('finish', function syncConfigs() {
        //perform additional tasks
    })
}

有时,数组envs有元素并且它会写入。在这些时刻,end() 被调用,finish 事件被捕获,我顺利地滚动。但是,有时,envs 可能为空,并且我不会写入该文件。 NodeJS 似乎挂起,因为我没有调用 write() 并且 finish 事件永远不会被调用。

为什么会发生这种情况?对于这种情况有解决方法吗?

最佳答案

如果您使用fs.createWriteStream(),您应该监听'close' 事件而不是'finish' 事件。

envFile.on('close', () => {
  // handle done writing
})

关于javascript - NodeJS - 写入文件有时会完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43358104/

相关文章:

javascript - 添加/删除 angular2 ng2-cookies 到路径

javascript - 我可以将一个 javascript 请求重定向到另一个 javascript 操作吗?

javascript - Puppeteer page.waitForNavigation() 超时错误处理

node.js - 使用 Firestore 云函数

node.js - 检查nodejs中的继承

javascript - 在文档或下载的超链接旁边显示实际文件大小

javascript - 在 PHP 中使用定义的 jQuery 变量

javascript - Google Chart 从数组中添加数据

javascript - webpack-dev-server 不会自动重新加载和构建 - 配置问题

node.js - 在 Mocha 测试框架中是否有可能将测试报告存储在本地文件中