Nodejs udemy课程代码错误

时间:2017-01-11 09:38:52

标签: javascript node.js

我遇到了从udemy nodejs课程运行一些代码的问题。我得到了它的功能(或它应该做什么),但是我不明白为什么greet2函数在事件完成后显示'未定义'。

代码是:

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定义未定义?

由于

3 个答案:

答案 0 :(得分:2)

变化:

BIO* bio = BIO_new(BIO_s_mem());
int len = BIO_write(bio, pem_key_buffer, pem_key_buffer_len);
EVP_PKEY* evp_key = PEM_read_bio_PUBKEY(bio, NULL, NULL, NULL);
RSA* rsa = EVP_PKEY_get1_RSA(evp_key);

要:

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和回调。

答案 1 :(得分:0)

JavaScript函数总是返回一些东西。如果您未在功能中指定要返回的内容,则“未定义”'默认返回。

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

答案 2 :(得分:0)

  

我为什么要为greet2定义未定义?

fs.readFile是一个异步函数,当它被'初始化'时它没有返回,当你调用它时它不会返回任何值。

您有初始值和异步调用的一个示例是var timeout = setTimeout(callback, mm)tout会保留一个值,您可以使用该值清除clearTimeout(tout)