“listener”参数必须是函数类型。收到未定义

Aas*_*ahu 0 javascript mongoose mongodb node.js

我运行这个脚本来使用 mongoose 连接到 MongoDB。

const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/curious", { useNewUrlParser: true });
const db = mongoose.connection;

const dbLog = (msg) => {
    console.log(`[DATABASE] [SUCCESS] ${msg}`);
}

const dbLogError = (msg) => {
    console.error(`[DATABASE] [ERROR] ${msg}`);
}

db.on("error", dbLogError("Database connection failure"));
db.once("open", () => {
    dbLog("Database connection successful");
})

mongoose.connection.close()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

PS D:\scripts> node .\dbUtils.js
[DATABASE] [ERROR] Database connection failure
events.js:110
    throw new ERR_INVALID_ARG_TYPE('listener', 'Function', listener);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "listener" argument must be of type function. Received undefined
    at checkListener (events.js:110:11)
    at _addListener (events.js:347:3)
    at NativeConnection.addListener (events.js:405:10)
    at Object.<anonymous> (D:\Workspace\curious-backend\scripts\dbUtils.js:13:4)
    at Module._compile (internal/modules/cjs/loader.js:1015:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
    at Module.load (internal/modules/cjs/loader.js:879:32)
    at Function.Module._load (internal/modules/cjs/loader.js:724:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47 {
  code: 'ERR_INVALID_ARG_TYPE'
}
Run Code Online (Sandbox Code Playgroud)

这个错误是什么?我该如何解决这个错误?

Stackoverflow 不允许我在没有更多文字的情况下发帖,所以,祝大家度过愉快的一天。现在是艰难时期。爱自己并照顾好自己。

Dip*_*hah 9

看起来问题出在error监听器中,因为它期待函数。更新:

db.on("error", dbLogError("Database connection failure"));
Run Code Online (Sandbox Code Playgroud)

到:

db.on("error", () => dbLogError("Database connection failure")); 
Run Code Online (Sandbox Code Playgroud)

它应该有效!