NodeJS:为什么功能被跳过?
NodeJS: Why is function being skipped?
我是 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...
}
您在模块中定义了 main
,但没有调用 main()
。如果这是您的全部代码,您需要在代码末尾添加 main()
才能执行它。
您永远不会调用 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
函数,并将其导出(如果您想 运行 来自另一个文件的相同函数,这很有用)。
const sendEmail = require('./send-email');
…加载模块并将exports
的值赋给sendEmail
.
那是 全部 它确实如此。
exports
的值是一个函数。如果你想调用那个函数,那么你必须……调用它。
sendEmail();
我是 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...
}
您在模块中定义了 main
,但没有调用 main()
。如果这是您的全部代码,您需要在代码末尾添加 main()
才能执行它。
您永远不会调用 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
函数,并将其导出(如果您想 运行 来自另一个文件的相同函数,这很有用)。
const sendEmail = require('./send-email');
…加载模块并将exports
的值赋给sendEmail
.
那是 全部 它确实如此。
exports
的值是一个函数。如果你想调用那个函数,那么你必须……调用它。
sendEmail();