首页 > 解决方案 > Node JS:Route.get() 需要一个回调函数,但是在使用 ES6 模块时得到了一个 [object Undefined]

问题描述

路由文件

  scoreboardroute.js

  import { scoreRouteController } from '../controllers/scoreboardcontroller';

  const SCOREROUTE = app => {
     app.route('/getAllScores').get(scoreRouteController.getAllScores);
  };

  export { SCOREROUTE };

控制器文件

scoreboardcontroller.js
import { scoreBoardModel } from '../model/scoreboardmodel';

class scoreRouteController {

 getAllScores = (req, res) => {
    scoreBoardModel.getAllScoresList((err, response) => {
        if (err) {
            res.send(err);
        }
        res.send(response);
    });
 };
}

export { scoreRouteController };

模型文件:

scoreboardmodel.js
import { db } from './db';

class scoreBoardModel {
  getAllScoresList = callback => {
    db.query('Select * from users', (err,response) => {
        callback(err, response);
    });
  }
};

export { scoreBoardModel };

我试图在我的应用程序中使用 ES6 特性,如类和箭头函数。当我尝试执行此代码时,它遇到了以下错误。我不知道出了什么问题。我对节点 JS 服务器真的很陌生。所以,谁能帮我摆脱这个错误。

错误

node_modules/express/lib/router/route.js:202 throw new Error(msg); ^

错误:Route.get() 需要回调函数,但在 SCOREROUTE ( /app/routes/scoreboardroute.js:4:32) 在对象。(/server.js:26:1) 在 Module._compile (internal/modules/cjs/loader.js:689:30)

标签: javascriptnode.jsexpresses6-moduleses6-class

解决方案


我正在寻找答案。

在导入我正在使用的类时,就像对象导入一样。所以,改变它像

import scoreRouteController from '../controllers/scoreboardcontroller';

而且我不会为我的应用程序使用这么多实例。因此,我为班级中的每个函数分配了 static 关键字。

static getAllScores = (req, res) => {.....

导出时我没有导出 Obj。我更改为默认类导出。

export default scoreRouteController;

最后,它起作用了。


推荐阅读