在用于快速路由的控制器功能中访问App.route时,它不是一个功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在用于快速路由的控制器功能中访问App.route时,它不是一个功能相关的知识,希望对你有一定的参考价值。

我正在尝试使用NodeJS创建一个简单的API。

我计划将主要的api.jsroute-definitions.jsroute-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时,它不是一个功能的主要内容,如果未能解决你的问题,请参考以下文章

Flask 学习-2.url访问地址(路由配置)

Flask快速入门 — flask路由的本质

7,Flask 中路由系统

Flask 学习之 路由

路由系统

第六篇 Flask中的路由系统