我想在节点中导出一个函数并在另一个文件中调用它。不知何故,它始终在导出模块中执行整个代码(不仅是导出的函数)。
//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),虽然这个日志不在导出的括号内?
答案 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()