我是nodeJs的新手,并试图理解为什么在这个文件中 - app.js - 函数main()永远不会被执行。
如果我在函数之前添加了一个console.log语句,它会被执行,但函数内部没有任何内容被执行。
我已经使用过调试器,果然,这个函数被完全跳过了。
为什么会这样?是否有一些我忽略的节点组件?
'use strict';
const sendEmail = require('./send-email');
module.exports = main;
//console.log("This gets executed");
//this function never gets executed!
function main()
{
debugger
...some functionality...
}
答案 0 :(得分:1)
您已在模块中定义main
但未致电main()
。如果这是您的所有代码,则需要在代码末尾添加main()
来执行它。
答案 1 :(得分:0)
您永远调用 main
函数。
将函数视为一段外包的代码,并给出一个名称。只要你不以名字命名,就什么都不会发生。
因此,您需要在代码中的某处添加以下行:
main();
然后它会起作用。 (请注意,在声明main
功能后,您应该执行此操作。)
console.log
会自动执行,因为它不是在函数中,而是已经在顶层。声明函数也是如此。这就是Node.js 创建这个函数的原因,但是你并没有告诉它实际上用它来做什么。
实际上,由于JavaScript处理函数语句的方式,在声明它之前调用main
也会起作用,但是我称之为更好的方式不这样做。使用module.exports
也是如此,这也可以这样工作,但如果你在创建函数之后做了它,我会称它为更好的样式。
因此,简而言之,您的代码应如下所示:
'use strict';
const sendEmail = require('./send-email');
console.log("This gets executed");
function main()
{
// ...
}
main();
module.exports = main;
这将为您运行main
函数,并将其导出(如果您想从另一个文件运行相同的函数,这将非常有用)。
答案 2 :(得分:-3)
const sendEmail = require('./send-email');
...加载模块并将exports
的值分配给sendEmail
。
确实全部。
exports
的值是一个函数。如果你想调用那个函数,那么你必须......调用它。
sendEmail();