在用于快速路由的控制器功能中访问App.route时,它不是一个功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在用于快速路由的控制器功能中访问App.route时,它不是一个功能相关的知识,希望对你有一定的参考价值。
我正在尝试使用NodeJS创建一个简单的API。
我计划将主要的api.js
,route-definitions.js
,route-logic.js
分别放在他们自己的单独文件夹中,以便他们更有条理和有条理。
然而,当我在我的app.route()
中调用route-definitions.js
时,它在编译时失败并且说app.route
不是函数。
server.js
var express = require('express')
var api = require("./api/api.js");
app = express();
port = process.env.PORT || 3000;
app.use('/', api);
app.listen(port);
api.js
var express = require('express');
var router = express.Router();
router.use('/read', require('./routes/route-definitions'));
module.exports = router;
路由definitions.js
'use strict';
module.exports = function(app) {
var operations = require('../controllers/route-logic.js')
//Route to check if a file with the same file name already exists
app.route('/getItems')
.post(operations.getItems);
}
当我尝试在本地运行API,并调用/ read / getItems时,我收到错误:
TypeError:app.route不是函数
我错过了什么?我是Node和Express的新手,但我知道我没有正确传递app实例,或者没有全局设置。
答案
您可以通过在route-definitions.js中创建子路由器来解决它
var router = require('express').Router();
var operations = require('../controllers/route-logic.js');
router.post('/getItems', operations.getItems);
module.exports = router;
另一答案
在api.js中,您需要将路由器传递给您在route-definitions.js中导出的函数
var express = require('express');
var router = express.Router();
router.use('/read', require('./routes/route-definitions')(router));
module.exports = router;
另一答案
你在app
中使用过route-definitions.js
,但看起来你忘了将它传递给那个模块。
请看下面的代码:
var express = require('express');
var router = express.Router();
var app = express();
router.use('/read', require('./routes/route-definitions')(app));
module.exports = router;
以上是关于在用于快速路由的控制器功能中访问App.route时,它不是一个功能的主要内容,如果未能解决你的问题,请参考以下文章