{{1}}
我尝试运行这两个操作,但它不起作用
答案 0 :(得分:1)
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
一样使用它们的异步版本,这些版本会返回回调或Promise。
fs
具有一个内置的子模块,其功能与require('fs').promises
可以访问的promises相同。
这样您就可以
const { rename, appendFile } = require('fs').promises;
try {
await rename("${nombreHtml}.html");
await appendFile("${nombreHtml}.html", htmlSeparado);
} catch (error) {
console.log(error);
}
答案 1 :(得分:0)
我假设您想要一个模板字符串,以便变量将自己插入到字符串中:
fs.rename(`${nombreHtml}.html`,(err)=>{
console.log(err)
})
fs.appendFileSync(`${nombreHtml}.html`, htmlSeparado, () => { })