Node.js 如何让节点编译器处理fs的这两个操作?

Node.js 如何让节点编译器处理fs的这两个操作?,node.js,Node.js,fs.rename(${nombreHtml}.html),(err)=>{ console.log(错误) }) fs.appendFileSync(“${nombreHtml}.html”,htmlsparado,()=>{}) 我尝试运行这两个操作,但它不起作用我假设您需要一个模板字符串,以便变量将自己插入字符串中: fs.rename(`${nombreHtml}.html`,(err)=>{ console.log(err)

fs.rename(${nombreHtml}.html),(err)=>{
console.log(错误)
})
fs.appendFileSync(“${nombreHtml}.html”,htmlsparado,()=>{})


我尝试运行这两个操作,但它不起作用

我假设您需要一个模板字符串,以便变量将自己插入字符串中:

fs.rename(`${nombreHtml}.html`,(err)=>{
                console.log(err)
            })
fs.appendFileSync(`${nombreHtml}.html`, htmlSeparado, () => { })

fs.rename
是一项异步任务

fs.rename
完成其执行时,
fs.appendFileSync
已经尝试将数据附加到一个当时不存在的html文件中

  • fs.重命名
    。。。等待回拨
  • fs.append
    。。。失败的
  • fs.rename
    finished,文件现在有了一个新名称
  • 您可能希望将
    fs.appendFileSync
    放在
    fs.rename
    回调中,或者切换到promissions。(底部示例) 应该起作用的示例:

    fs.rename("${nombreHtml}.html",(err)=>{
      if (err) console.log(err)
      else {
        fs.appendFileSync("${nombreHtml}.html", htmlSeparado, () => { })
      }
    })
    
    
    顺便说一句,由于同步函数会阻塞事件循环,因此在处理该函数时会冻结服务器,从而使其无法用于任何其他请求-对于一般用例,不建议使用
    文件系统
    的同步函数,因为读/写/附加操作相当长。建议使用它们的异步版本,它返回回调或承诺,就像您使用
    fs.rename所做的那样

    fs
    有一个内置子模块,其功能与promissions相同,可通过
    require('fs')访问。promissions

    这样你就可以

    const { rename, appendFile } = require('fs').promises;
    
    try {
      await rename("${nombreHtml}.html");
      await appendFile("${nombreHtml}.html", htmlSeparado);
    } catch (error) {
      console.log(error);
    }
    
    

    它不起作用我想要的是删除这个同名文件,以便以后可以更新该文件