如何在.replace中为node中的fs输入变量

时间:2017-05-09 10:43:33

标签: node.js fs

我将如何在replace()中传递ref变量?我试试下面的代码,b

var ref = "www.facebook.com";

fs.readFile('text.html','utf8', function (err, data) {
    if (err) {
        return console.log(err);
    }

    var result = data.replace(/href="'+ref+'"/g, 'href="changeRef"');

    fs.writeFile('text.html', result, 'utf8', function (err) {
        if (err) return console.log(err);
        next();
    });

})

1 个答案:

答案 0 :(得分:0)

使用RegExp类而不是内联正则表达式。

data.replace(new RegExp('href="'+ref+'"', 'g'), ...)

但我建议您使用streams来完成工作而不是回调。它会是这样的:

const through2 = require('through2');
const fs = require('fs');
const writable = fs.createWriteStream('destPath');

fs
  .createReadStream('path')
  .pipe(new through2((data, enc, cb) => {
      const chunk = data.toString();
      chunk = chunk.replace(new RegExp('foo', 'g'), 'bar');
      cb(null, chunk);
   }))
   .pipe(writable);