ReferenceError: data is not defined when writing a piped gulp script

ReferenceError: data is not defined when writing a piped gulp script

  gulp.task('default', function(done) {
    inquirer.prompt([{
        type: `input`,
        message: `Enter the path`,
        default: `./admin/admin.json`,
        name: `path`
    }]).then(function(answers) {
      console.log(answers.path);
      console.log('answers');
      mydefaultTaskTwo(null, answers.path).pipe(pipedFunction());
      done();
    })

  });

  function mydefaultTaskTwo(cb, path) {
    let data = '';

    try {
      data = fs.readFileSync(path, 'utf-8');
    } catch (e) {
      console.log(`Error: ${e}`);
    }
    return data;

  }

  function pipedFunction() {
    let object = JSON.parse(data);
    object['main'] = 'admin';
    data = JSON.stringify(object);

    const readable = Readable.from(data)
    return readable;
  }

我知道 src returns 是一个流,管道接受该流和 return 一个流,但是如何将流输入管道内部调用的 pipedFunction?我不确定它是如何工作的。我收到以下错误:

ReferenceError: data is not defined.

我对 gulp 脚本有什么误解吗?

基本上,您将 data 定义为局部作用域级变量,并尝试从不同的作用域(即 undefined)访问它。因此,您需要利用返回 data 的事实并传递它,例如:

var data = mydefaultTaskTwo(null, answers.path);
data.pipe(pipedFunction(data));