module.exports没有按预期工作

时间:2018-05-10 19:51:41

标签: javascript node.js

我想在节点中导出一个函数并在另一个文件中调用它。不知何故,它始终在导出模块中执行整个代码(不仅是导出的函数)。

//file:  test.js

module.exports = function () {
console.log("Hello");
}

console.log("Hello2");



//file: test2.js
var test = require("./test");
test();

// Desired Output: Hello
// My actual Output: Hello2 Hello

有人可以解释一下,为什么它也在运行第二个日志(Hello2),虽然这个日志不在导出的括号内?

3 个答案:

答案 0 :(得分:1)

当您require文件时,您导入整个文件并执行。由于console.log('Hello2');未在函数中定义,因此在需要文件时会执行它。

这就是为什么你应该先看Hello2。然后调用执行的test函数并打印出Hello

您的输出应为:

Hello2 
Hello

答案 1 :(得分:-1)

尝试进行命名导出,

例如:

module.exports = function first () {
  console.log("Hello");
}

并在您的test2.js中:

var test = require("./test");
test.first();

答案 2 :(得分:-1)

执行then()时,您需要整个文件,而不仅仅是您导出的模块。在您希望使用该功能的文件中,您需要从其他文件导入该功能。

尝试这样做:

Promise.all()