fs.rename("${nombreHtml}.html",(err)=>{
console.log(err)
})
fs.appendFileSync("${nombreHtml}.html", htmlSeparado, () => { })
我尝试运行这两个操作,但它不想工作
fs.rename
是一个异步任务。
当fs.rename
完成执行时,fs.appendFileSync
已经尝试将数据附加到当时不存在的html文件中。
fs.rename
......等待回调fs.append
......失败- 完成后
fs.rename
,文件现在具有新名称。
您可能希望将fs.appendFileSync
放在fs.rename
回调中,或者切换到 promise。(底部示例( 应该工作的示例:
fs.rename("${nombreHtml}.html",(err)=>{
if (err) console.log(err)
else {
fs.appendFileSync("${nombreHtml}.html", htmlSeparado, () => { })
}
})
顺便说一下,由于同步函数阻塞了事件循环,因此冻结了服务器处理该函数的时间,使其无法用于任何其他请求 - 对于一般用例,不太建议使用filesystem
的同步函数,因为读/写/追加操作相当长。 建议使用它们的异步版本, 返回回调或承诺,就像您使用fs.rename
所做的那样。
fs
有一个内置的子模块,其功能与 promise 相同,可以通过require('fs').promises
访问。
这样你就可以
const { rename, appendFile } = require('fs').promises;
try {
await rename("${nombreHtml}.html");
await appendFile("${nombreHtml}.html", htmlSeparado);
} catch (error) {
console.log(error);
}
我假设你想要一个模板字符串,以便变量将自己插入到字符串中:
fs.rename(`${nombreHtml}.html`,(err)=>{
console.log(err)
})
fs.appendFileSync(`${nombreHtml}.html`, htmlSeparado, () => { })