【发布时间】:2019-12-22 01:52:56
【问题描述】:
我正在我的 express 应用程序中设置控制器、模型、路由和视图。修改仅使用视图的应用程序,我收到此错误: Router.use() 需要一个中间件函数,但有一个未定义的
我让它只使用 pug 视图和 server.js 文件,但是一旦我添加了模型/控制器/路由,它就会抛出这个错误。
# server.js
// http://localhost:8099/tasks
var router = express.Router();
var tasksRouter = require('./routes/tasks');
app.use('/tasks', tasksRouter.tasks_list);
# models\tasks.js
const mysql = require('mysql');
// connection configurations
const mc = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'mysql',
port: '2001'
});
// connect to database
mc.connect();
module.exports = mc;
# controllers\tasksController.js
var Tasks = require('../models/tasks');
// Display list of all tasks.
exports.tasks_list = function(req, res, next) {
mc.query('SELECT * FROM tasks', function (error, results, fields) {
if (error) throw error;
//console.log('The solution is: ', results);
res.render('tasks_list', {
title: 'Results',
data: results
});
});
};
#routes\tasks.js
var express = require('express');
var router = express.Router();
// Require controller modules.
var tasks_controller = require('../controllers/tasksController');
/// ROUTES ///
// GET request for list of all tasks.
router.get('/tasks', tasks_controller.tasks_list);
module.exports = router;
#views\tasks_list.pug
extends layout
block content
h1= title
p Welcome to #{title}
table
for tasks in data
tr.odd(role='row')
td #{tasks.id}
td #{tasks.task}
td #{tasks.status}
td.dt-body-right.sorting_1 #{tasks.created_at}
我应该在浏览器中显示一个将表格数据解析为 html 的页面。但在我的控制台中,我得到: c:\ExpressProject4\express-node-rest-project\node_modules\express\lib\router\index.js:458 throw new TypeError('Router.use() 需要一个中间件函数但得到一个' + gettype(fn)) ^
TypeError: Router.use() 需要一个中间件函数,但有一个未定义的函数 在 Function.use (c:\ExpressProject4\express-node-rest-project\node_modules\express\lib\router\index.js:458:13) 在功能。 (c:\ExpressProject4\express-node-rest-project\node_modules\express\lib\application.js:220:21) 在 Array.forEach () 在 Function.use (c:\ExpressProject4\express-node-rest-project\node_modules\express\lib\application.js:217:7) 在对象。 (c:\ExpressProject4\express-node-rest-project\server.js:34:5) 在 Module._compile (internal/modules/cjs/loader.js:778:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) 在 Module.load (internal/modules/cjs/loader.js:653:32) 在 tryModuleLoad (internal/modules/cjs/loader.js:593:12) 在 Function.Module._load (internal/modules/cjs/loader.js:585:3)
【问题讨论】:
标签: node.js express model controller routes