【问题标题】:Read file with fs module and keep the original file使用 fs 模块读取文件并保留原始文件
【发布时间】:2021-07-11 01:13:49
【问题描述】:

我实际上正在开发一个发送邮件的 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.handlebars 与replace() 之前一样。 有可能吗?

非常感谢。

【问题讨论】:

    标签: html node.js handlebars.js fs


    【解决方案1】:

    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);
        }
    })
    

    【讨论】:

      猜你喜欢
      • 2020-06-12
      • 2021-01-26
      • 2015-06-09
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多