gpt4 book ai didi

node.js - Express:单独的路由和 Controller 文件

转载 作者:搜寻专家 更新时间:2023-10-31 22:23:04 26 4
gpt4 key购买 nike

我试图将 Express 中的一些路由及其处理程序逻辑拆分到单独的文件中。我已经看到示例目录结构,例如使用单独的路由和 Controller 文件的平均 JS,所以我正在尝试实现这种方法,但遇到了问题。

我的服务器和路由配置如下:

server.js

var express = require('express'),
app = express(),
bodyParser = require('body-parser'),
routes = require('./routes/index')

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
routes(app);

/routes/index.js

module.exports = function(app) {
var catalogues = require('../routes/catalogues');
app.use('/catalogues-api', catalogues);
};

/routes/catalogues.js

var catalogues = require('../controllers/catalogues');
module.exports = function(app) {

app.route('/catalogues')
.get(catalogues.apiGET)
.post(catalogues.apiPOST);
};

/controllers/catalogues.js

var request = require('request');

exports.apiGET = function(req, res) {
var options = prepareCataloguesAPIHeaders(req);
request(options, function(err, response, body){
res.send(body);
});
};

exports.apiPOST = function(req, res) {
var options = prepareCataloguesAPIHeaders(req);
options.json = true;
options.body = stripBody(req.body);
request(options, function(err, response, body){
res.send(body);
});
};

当运行应用程序并针对/catalogues-api/catalogues 发出 GET 请求时,我收到从 Node 抛出的错误:

TypeError: undefined is not a function at module.exports (C:\Users\rparker\Documents\GitHub\testproj\src\server\routes\catalogues.js:4:7)

这是在我的/routes/catalogues.js 文件中引用 app.route 声明。我显然在我的设置中遗漏了一些东西,但我无法弄清楚。

有人可以帮忙吗?谢谢

最佳答案

/routes/catalogues.js

var express = require('express');
var router = express.Router();
var catalogues = require('../controllers/catalogues');

router.route('/catalogues')
.get(catalogues.apiGET)
.post(catalogues.apiPOST);
module.exports = router;

查看 this documentation 的最后一部分

关于node.js - Express:单独的路由和 Controller 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34174115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com