Node.js在控制台上显示“undefined”

56

最近我在我的Windows 7电脑上安装了node.js。

执行JavaScript时,我会得到一个undefined消息,同时表达式也成功执行了。

这里有什么问题?我没有注意到任何其他副作用。

输入图像描述


这个回答解决了你的问题吗?node.js REPL "undefined" - Flash Ang
10个回答

53

JavaScript函数总是会返回某些东西。如果您在函数中没有指定要返回的内容,则默认情况下返回'undefined'(您也可以在Firebug中检查此内容)。

不过,不用担心,这不会影响任何事情,您可以忽略它。


1
+1。感谢回复。有没有办法摆脱“undefined”,应该怎么写语法? - Sandeep G B
1
如果你制作一个程序(Web应用或命令行),你永远不会遇到“飞行”的未定义变量,所以不要担心这个问题。 - alessioalex
当我没有输入任何函数或任何字符时,“undefined”也会显示。您能否解释一下发生了什么? - Sandeep G B
6
引擎盖下正在发生什么事情。例如输入 asdasd,您会看到此错误:在 REPLServer.eval (repl.js:80:21) 中...因此,在幕后有一个 eval() 函数,它返回 'undefined'。 - alessioalex
谢谢,我懂了 :) 我应该开始看如何实现它,而不只是如何让它工作。 - Sandeep G B

36

只需写下"hello world";并按回车键...它将返回"hello world"而不是undefined,因此没有显示undefinedconsole.log返回undefined,同时将参数记录到控制台,因此您会得到多条消息。


谢谢Esailija。当我没有输入任何函数或任何字符时,也会显示“undefined”。你能否解释一下发生了什么? - Sandeep G B
@SandeepGB,如果没有任何输入,你期望得到什么? :P 不输入任何内容的返回值最有意义的应该是 undefined - Esailija
2
我试图理解发生了什么。alessioalex回答了我的问题 :) - Sandeep G B

19

正如其他人指出的那样,如果您没有指定任何返回值,JavaScript函数将始终返回undefined。您可以忽略它。这不会造成任何伤害。 但是,如果它让你太烦恼,那么您可以在repl中关闭它。repl具有此属性ignoreUndefined,默认设置为false。您可以将其设置为true。 尝试一下:

module.exports.repl.ignoreUndefined = true;

9

嗯,这个问题是几年前提出的,但仍然有另一种方法来解释这里发生了什么。

尝试下一个命令:

console.log("Hello World") || "Bye World";

如上所述,函数console.log()通常返回undefined,您可以选择更好的返回值。由于非严格(抽象)比较将undefined视为等于false,因此||运算符允许您进行选择。
考虑到它只是一个调试工具,在一般用途中这是不必要的,但有助于理解控制台显示发送到stdout的文本,并且还评估命令并显示返回值,如果没有收到值,则返回undefined。

嗨 @Melo,我认为这段代码可以重写成一个更好的 console.log("Hello World") || "Bye World"。 - Devid Farinelli

4

node 同样会输出 undefined,因为通常情况下,它会显示每个命令的返回值,而console.log没有返回任何内容。


4
如果需要在模块内部打开 ignoreUndefined ,可以使用以下代码模拟 AvinashB 的回答,无需手动输入到控制台:
process.stdin.emit('data', "module.exports.repl.ignoreUndefined = true;\n");

0
为了避免在使用Node的repl模块时看到命令输出undefined,请在repl.start中将ignoreUndefined设置为true

0

这是因为console.log具有(null/undefined)返回类型,为了解决这个问题...需要编写一个返回字符串的函数...然后记录该函数返回的值...这将克服undefined问题...

const addNotes= function(msg)
{
    return msg;
}
console.log(addNotes('say hello'));

0

别管它,完全不用担心。我也遇到过同样的问题,当我调用没有返回类型的函数时,Node会打印出被调用函数的未定义返回类型。

function emitEvent(eventname){
    eventEmitter.emit(SIV_EVENT);
}
console.log(emitEvent());

检查这里的未定义,https://nodejs.org/api/util.html

0
在您的索引文件中使用“middle where”。
app.use(express.json())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接