Node.js的新增功能。从其他文件调用函数,但节点正在打印整个文件内容

Node.js的新增功能。从其他文件调用函数,但节点正在打印整个文件内容,node.js,Node.js,我有两个文件basic.js basic1.js。请查找以下代码: basic.js: console.log("My first node statement"); const sum =(a,b)=> a+b; console.log(sum(1,1)); module.exports.sum =sum; basic1.js: const sum1= require('./basic'); const EventE= require('events'); const eventEmi

我有两个文件basic.js basic1.js。请查找以下代码:

basic.js:

console.log("My first node statement");
const sum =(a,b)=> a+b;
console.log(sum(1,1));
module.exports.sum =sum;
basic1.js:

const sum1= require('./basic');
const EventE= require('events');
const eventEmitter = new EventE();

eventEmitter.on('firstEvent',(a,b)=> {
  console.log(sum1.sum(a, b));
});

eventEmitter.emit('firstEvent',5,6);
在运行basic1.js时,我得到了以下输出,这似乎不正确,因为它应该只调用函数

node basic1.js
My first node statement
2
11

如注释所示,无论何时您需要一个模块,它都会运行该模块中的所有顶级语句。这样,任何动态创建/分配的对象、函数、常量等实际上都存在。这与在浏览器中向网页添加脚本非常相似。例如,您可以删除所需文件中的console语句,或者将它们移动到不自动运行函数表达式或方法的范围中

此外,在评论中,要求能够简单地使用该功能。发生这种情况的原因是因为这一行:

module.exports.sum =sum;
基本上,您返回的对象具有名为sum的属性。这是因为,默认情况下,为了简单起见,module.exports是一个没有自己键的对象。在代码方面,模块结果如下:

{
  sum: sum
}
要解决此问题,请将行更改为:

module.exports = sum;

现在,您只需返回函数,并且只返回函数。

1+1是2,这是第一个日志。5+6等于11,这是第二个对数。我遗漏了什么吗?导入文件将运行该文件代码,在该文件中有2个控制台日志。你甚至都没打电话给Sum就给他们打了电话谢谢你的回答。任何使用该函数的方法。甚至我也在使用const sum1=require'/basic'.sum;它仍然在打印整个文件。@prakashkumar是的,将函数移到另一个文件中,并从需要它的两个文件中都需要它
node basic1.js
My first node statement
2
11