Nodejs的udemy课程代码错误

从udemy nodejs课程运行一些代码,我遇到了一个问题。 我知道它做了什么(或者它应该做什么),但是我不明白为什么greet2函数在事件完成后向我显示'undefined'。

代码是:

var fs = require('fs'); var greet = fs.readFileSync(__dirname + '/greet.txt', 'utf8'); console.log(greet); var greet2 = fs.readFile(__dirname, + '/greet.txt', 'utf8', function(err, data) { console.log(data); }); console.log('Done!'); 

我正在控制台中显示:

你好,世界! 完成! 未定义

任何想法,为什么我得到未定义的greet2?

谢谢

       

网上收集的解决方案 "Nodejs的udemy课程代码错误"

更改:

 var greet2 = fs.readFile(__dirname, + '/greet.txt', 'utf8', function(err, data) { console.log(data); }); 

至:

 var greet2 = fs.readFile(__dirname + '/greet.txt', 'utf8', function(err, data) { console.log(data); }); 

(一个额外的逗号)

你的代码工作,但你传递给readFile函数的是__dirname ,然后是+'/greet.txt'它的计算结果为NaN ,然后是其他参数,如'utf8'和callback。

JavaScript函数总是返回一些东西。 如果在函数中没有指定要返回的内容,默认情况下会返回“undefined”。

但是不要担心,这并不影响任何事情,你可以忽略它。 这不会造成任何伤害。

任何想法,为什么我得到未定义的greet2?

fs.readFile是一个asynchronous函数,当它被初始化的时候它没有返回,所以当你调用它时它不会返回任何值。

你有一个初始值和asynchronous调用的例子是var timeout = setTimeout(callback, mm)tout将保存一个值,您可以使用clearTimeout(tout)来清除它。