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);
}
它不起作用我想要的是删除这个同名文件,以便以后可以更新该文件