【问题标题】:node server Error: Route.get() requires a callback function but got a [object Undefined]节点服务器错误:Route.get() 需要回调函数,但得到了 [object Undefined]
【发布时间】:2022-01-11 19:33:21
【问题描述】:

当我尝试运行节点服务器时,我得到错误:Route.get() 需要一个回调函数但得到一个 [object Undefined]
在路线。 [得到]

这是完整的错误信息:

节点服务器.js E:\OneDrive\Documents\rest\node_modules\express\lib\router\route.js:202 抛出新的错误(味精); ^ 错误:Route.get() 需要回调函数,但得到了 [object Undefined]
在路线。 [as get] (E:\OneDrive\Documents\rest\node_modules\express\lib\router\route.js:202:15) 在 module.exports (E:\OneDrive\Documents\rest\routes.js:13:10) 在对象。 (E:\OneDrive\Documents\rest\server.js:11:1) 在 Module._compile (internal/modules/cjs/loader.js:1063:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
在 Module.load (internal/modules/cjs/loader.js:928:32) 在 Function.Module._load (internal/modules/cjs/loader.js:769:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) 在内部/main/run_main_module.js:17:47 块引用

controller.js

    'use strict';

var response = require('./res');
var connection = require('./connection');

exports.index = function (req, res) {
    response.ok("REST API!", res)
};

//display all restapi data
exports.displayrestapi = function (req, res) {
    connection.query('SELECT * FROM restapi', function (error, rows, fileds) {
        if (error) {
            console.log(error);
        } else {
            response.ok(rows, res)
        }
    });

    //display all restapi data by id
    exports.displaybyid = function (req, res) {
        let id = req.params.id;
        connection.query('SELECT * FROM restapi WHERE id = ?', [id],
            function (error, rows, fields) {
                if (error) {
                    console.log(error);
                } else {
                    response.ok(rows, res);
                }
            });
    };
};

routes.js

'use strict';

module.exports = function (app) {
    var jsonku = require('./controller');

    app.route('/')
        .get(jsonku.index);

    app.route('/display')
        .get(jsonku.displayrestapi);

    app.route('/tampil/:id')
        .get(jsonku.displaybyid);
}

server.js

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

//parser application/json
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

//panggil routes
var routes = require('./routes');
routes(app);

app.listen(3000, () => {
    console.log(`Server started on port`);
});

TIA^^

【问题讨论】:

  • 您的exports.displaybyid 嵌套在exports.displayrestapi
  • 在 controller.js 中不应该使用module.exports 吗?

标签: javascript node.js


【解决方案1】:
//display all restapi data
exports.displayrestapi = function (req, res) {
    connection.query('SELECT * FROM restapi', function (error, rows, fileds) {
        if (error) {
            console.log(error);
        } else {
            response.ok(rows, res)
        }
    });
}

    //display all restapi data by id
    exports.displaybyid = function (req, res) {
        let id = req.params.id;
        connection.query('SELECT * FROM restapi WHERE id = ?', [id],
            function (error, rows, fields) {
                if (error) {
                    console.log(error);
                } else {
                    response.ok(rows, res);
                }
            });
    };

您忘记关闭 displayrestapi 控制器?。只需复制粘贴此代码即可 100% 工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2021-04-03
    • 1970-01-01
    • 2017-06-21
    相关资源
    最近更新 更多