我正在尝试使用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;
route-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 and Express还是很陌生,但是我知道我没有正确传递应用程序实例,或者未全局设置它。
答案 0 :(得分:0)
在api.js中,您需要将路由器传递到要在route-definitions.js中导出的功能
var express = require('express');
var router = express.Router();
router.use('/read', require('./routes/route-definitions')(router));
module.exports = router;
答案 1 :(得分:0)
您可以通过在 route-definitions.js
中创建子路由器来解决此问题var router = require('express').Router();
var operations = require('../controllers/route-logic.js');
router.post('/getItems', operations.getItems);
module.exports = router;
答案 2 :(得分:0)
您在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;