【问题标题】:writeFileSync doesn't callbackwriteFileSync 不回调
【发布时间】:2018-10-05 18:10:20
【问题描述】:

我正在使用 writeFileSync 函数在本地写入文件,文件确实被写入,但是从未调用回调函数。

我做了一些谷歌搜索,其他一些帖子的问题是 1)传递内容出错或 2)同时具有两个写入功能。

我的问题是我的代码中还有其他一些地方正在使用 writeFileSync,但它们位于不同的路径上(不确定这是否是正确的术语,localhost:port#/differentroutes

这是我的代码:

if(!fs.existsSync(dir)){
        fs.mkdirSync(dir)
    }

//content is just a string var I swear it's just a string

    fs.writeFileSync('./pages/SubmissionProcess.html',content,function(err){
        if(err){
            throw err
        }else {
            console.log("YES")
        }
    })

即使文件已经写入,我也从未在控制台中看到此“是”或错误....

【问题讨论】:

  • 因为它是同步的,不需要注册回调!!!!
  • @shanks 这是什么意思...
  • 你只为异步函数注册回调,同步版本不需要回调
  • fs.writeFileSync('./pages/SubmissionProcess.html',content) 应该会出现
  • @shanks 好吧...那我怎么知道它完成了???

标签: javascript node.js fs writefile


【解决方案1】:

写入文件同步不需要回调:D

查看文档:

https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options

参数是(路径、数据、选项)

如果要检查文件是否真正写入,可以在写入后读取文件同步或检查文件最后一次更新的时间。否则,您应该尝试使用异步方法。

【讨论】:

    【解决方案2】:

    所有同步方法throw,而不是将错误传递给回调。

    try {
        fs.writeFileSync('./pages/SubmissionProcess.html', content);
        console.log('YES');
    } catch (e) {
        console.error(e);
    }
    

    【讨论】:

    • 别以为这样行不通,如果你放了一个像'/'这样的错误文件路径并尝试它,YES仍然出现然后错误出现在
    猜你喜欢
    • 1970-01-01
    • 2020-10-29
    • 2022-01-25
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2013-03-10
    相关资源
    最近更新 更多