node.js
にisが生成された直後にpdfを削除しようとしています。生成されたpdfは電子メールの添付ファイルとして送信され、dropbox
にアップロードされ、ローカルファイルシステムから削除されます。しかし、私はそれを削除しようとすると、それは削除されませんし、どちらかの電子メールを送信しません。 pdfはhtml-pdf
を使用して作成されます。ここに私のコードは次のとおりです。Nodejs直ちに生成ファイルを削除
if (result) {
var filename = user.number+ ".pdf";
var path = './public/files/'+filename ;
var options = { filename: path, format: 'Legal', orientation: 'portrait', directory: './public/files/',type: "pdf" };
html = result;
pdf.create(html, options).toFile(function(err, res) {
if (err) return console.log(err);
console.log(res);
});
var dbx = new dropbox({ accessToken: mytoken });
fs.readFile(path,function (err, contents) {
if (err) {
console.log('Error: ', err);
}
dbx.filesUpload({ path: "/"+filename ,contents: contents })
.then(function (response) {
console.log("done")
console.log(response);
})
.catch(function (err) {
console.log(err);
});
});
var mailOptions = {
from: 'xyz', // sender address
to: user.email, // list of receivers
subject: 'Confirmation received', // Subject line
attachments : [{
filename: filename,
path : path
}]
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('Message %s sent: %s', info.messageId, info.response);
});
fs.unlinkSync(path); // even tried fs.unlink , does not delete file
// fs.unlinkSync(someother file); this one works
}
だから私はfs.unlink' or
fs.unlinkSync`を行う際に、ファイルが既にある、それは動作しますが、パスのように生成されたファイルは削除されません場合。
あなたは電子メールを送信完了するまで待つ必要があります。 – SLaks
console.logはあなたの親友です。もしあなたが 'unlinkSync(path)'の代わりに何かを印刷すると、ファイルを削除しようとした後に 'Message sent [...]'が出ることに気づくでしょう。 –