当我告诉它运行一个文件时,Node 会运行两个文件



我刚刚开始学习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")
}

最新更新