使用 fs 模块读取文件并保留原始文件

Read file with fs module and keep the original file

我实际上正在开发一个发送邮件的 NodeJS API。

index.handlebars 是我每次需要发送电子邮件时都想使用的模板

所以我使用 Node File Systeme (fs)readFileSync() 然后 replace() 数据需要在向用户发送电子邮件之前。

这里有一个例子:

const readMe = fs.readFileSync('./mails/index.handlebars', 'utf8', (error, data) => {
  if (error) {
    console.log(error);
  } else {
    data = data.toString('utf8').replace('{%CONFIRMATION%}', "SELLER AS VALIDATE YOUR ORDER")
    return data
  }
})
console.log(readMe);

首先,有时 replace() 对我不起作用,什么也没发生。不知道为什么。

但当它起作用时,我的目标是不覆盖 index.handlebars。我的意思是 replace() 所有的东西然后发送,但保持 index.handlebarsreplace() 之前一样。 可能吗?

非常感谢。

fs模块提供了fs.readFile(异步读取文件,回调)和fs.readFileSync(同步读取,不需要回调)

您目前在尝试使用回调进行同步读取时混淆了 2 个签名。

要使用 readFileSync(同步),您应该

// synchronous without callback
const data = fs.readFileSync('./mails/index.handlebars', { encoding: 'utf8', flag: 'r' })
const replaced = data.replace('{%CONFIRMATION%}', "SELLER AS VALIDATE YOUR ORDER")
console.log(replaced);

对于 readFile(异步),您使用回调

// asynchronous with callback
fs.readFile('./mails/index.handlebars', 'utf8', (error, data) => {
    if (error) {
        console.log(error);
    } else {
        data = data.replace('{%CONFIRMATION%}', "SELLER AS VALIDATE YOUR ORDER")
        // perform necessary operations on data
        console.log(data);
    }
})