我在我的gulpfile.js中有以下任务:
function compileHandlebars() {
options = {
batch: ['./src/views/modules/*.hbs']
}
let data;
fs.readFile('./data.json', 'utf-8', (error, content) => {
if(error) throw error;
data = content;
console.log(data) // --> outputs actual content
});
console.log(data); // --> outputs undefined
return gulp.src('./src/views/layouts/index.hbs')
.pipe(handlebars(data)) // <-- receives 'undefined' as an argument
.pipe(rename('index.html'))
.pipe(gulp.dest('dist'));
};
它应该加载data.json内容并将其分配给一个名为'data'的变量,以便它可以在管道中的handlebars()函数中使用,以从模板形成html。问题是,一旦我将console.log()移出fs.readFile()回调范围,它就会输出'undefined'。我如何使'data'变量保持我在回调函数中设置的值?
1条答案
按热度按时间s4chpxco1#
当前的调用异步运行,所以它在代码移到下一行时执行任务,然后在完成时触发回调。因此,在继续下一步之前,需要等待读取完成。
请尝试使用
readFileSync
。