从readFile返回undefined

我试图让下面的代码工作:

'use strict'; var fs = require('fs'); var fileName = 'readme.txt'; var str = fs.readFile(fileName, 'utf8', function (err, data) { if (err) { console.log(err); throw err; } return data; }); console.log('result read: ' + str); 

readme.txt文件:

 console.log('working'); 

我试图显示以下内容:

 result read: console.log('working'); 

readFile是asynchronous执行的,所以只能在callback函数内部访问data ,如果你希望它是同步的,你应该使用readFileSync

asynchronous:

 'use strict'; var fs = require('fs'); var fileName = 'readme.txt'; var str = fs.readFile(fileName, 'utf8', function (err, data) { if (err) { console.log(err); throw err; } console.log('result read: ' + data); }); 

同步:

 var str = fs.readFileSync(fileName, 'utf8'); console.log('result read: ' + str); 

readFile是一个asynchronous方法(因此是callback函数)。在asynchronous函数的callback中,您需要console.log(或者任何您想要对结果执行的操作)。 这几乎是node.js的支柱 – 通过允许将asynchronous方法放到事件循环中,它可以防止代码被阻塞。

你正在调用一个asynchronous函数。 这意味着它不会等待被调用时返回,在这种情况下,将返回undefined。

您可以使用readFileSync方法同步调用它,也可以将console.log放在callbackconsole.log