Node.js 错误:回调函数不是函数

Node.js 错误:回调函数不是函数,node.js,Node.js,我有服务器文件和db.js文件(连接到db)。在exports.connect中,我使用带有“done”参数的函数(它是回调函数)。但“done()”不起作用,在控制台中写入错误“done不是函数”。 我能做什么? server.js: let db = require("./db"); let MongoClient = require("mongodb").MongoClient; let ObjectID = require("mongodb").ObjectID; app.liste

我有服务器文件和db.js文件(连接到db)。在exports.connect中,我使用带有“done”参数的函数(它是回调函数)。但“done()”不起作用,在控制台中写入错误“done不是函数”。 我能做什么? server.js:

let db = require("./db"); 
let MongoClient = require("mongodb").MongoClient;
let ObjectID = require("mongodb").ObjectID;

app.listen(3164, function() {
  console.log("API app started");
});
db.connect("mongodb://localhost:27017",{useUnifiedTopology: true,useNewUrlParser: true},err => {
  if (err) {
     console.log(err);
    }
  });
db.js:

let MongoClient = require("mongodb").MongoClient;
let state = {
  db: null
};

exports.connect = function(url, done) {
  if (state.db) {
    return done();
  }
  MongoClient.connect(url, { useUnifiedTopology: true }, function(err, db) {
    if (err) {
      return done(err);
    }
    state.db = db;
    done();
  });
};
exports.get = function() {
  return state.db;
};
控制台日志:TypeError:done不是函数


在/home/bukrole/db.project/db.js:16:5

中,您已经声明了函数
connect(url,done)
,它只需要2个参数,并且在文件
server.js
中,您使用3调用它(第二个是对象)。您必须将函数声明修改为
function connect(url,params,done)

您已经声明了只需要2个参数的函数
connect(url,done)
,并且在文件
server.js
中您用3个参数调用它(第二个是对象)。您必须在
db.js
Change中将函数声明修改为
function connect(url,params,done)

exports.connect = function(url, done) {

因为您正在以
db.connect(“mongodb://localhost:27017“,{useUnifiedTopology:true,useNewUrlParser:true},err=>{
通过三个参数

注意


但是您没有使用db.js文件中的选项,最好在
db.js
Change中调用自己时避免使用这些选项

exports.connect = function(url, done) {

因为您正在以
db.connect(“mongodb://localhost:27017“,{useUnifiedTopology:true,useNewUrlParser:true},err=>{
通过三个参数

注意

但是您没有使用db.js文件中的选项,最好在调用自身时避免使用这些选项