我刚刚开始学习Node,但我遇到了一个奇怪的错误。每当我告诉节点运行一个文件时,它都会运行两个文件,而不仅仅是我告诉它运行的文件。
我有一个名为"app.js"的文件和另一个名为"logger.js"的文件。这是"应用程序.js":
function helloworld(msg) {
console.log(msg)
}
console.log("Hello world! This is app.js")
module.exports.myhelloworldfunction = helloworld
这是"记录器.js":
const appjs = require("./app")
appjs.myhelloworldfunction("This is a message. ")
每当我在终端中执行"节点记录器.js"时,我都会得到以下输出:
Hello world!
This is a message.
当我应该得到的只是:
This is a message
正如我所说,我是一个绝对的初学者,所以我认为我在这里犯了一个愚蠢的错误,但有谁知道为什么会发生这种情况以及如何解决它?
谢谢!
导入文件时,将执行其内容。
在您的情况下,将定义一个名为helloworld
的函数,执行该日志语句并导出您创建的函数(即外部可以访问(。
因此,只需删除log
语句,或者如果您只想在执行文件而不是导入文件时打印它,则可以使用如下所示的内容:
if (require.main === module) {
console.log("I'm being executed")
} else {
console.log("I'm being imported")
}