首页 > 解决方案 > Node js:当我使用get方法时出现错误无法获取/路由

问题描述

当我使用“use”方法时,我的代码工作正常,但是当我使用“get”时,它会给出错误:“Cannot GET /route1”。

我的代码:

const express = require('express');
const app = express();
const expbs = require('express-handlebars');
const path = require('path');

const routes = require('./routes/handlers');

app.use(express.static('public'));

const hbs = expbs.create({
    defaultLayout: 'main',
    layoutsDir: path.join(__dirname, 'views/mainLayout'),
    partialsDir: path.join(__dirname, 'views/pieces'),
});

app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');

app.get('/route1', routes);

app.listen(8080, () => {
    console.log('Server is starting at port ', 8080);
});

我是 node js 的新手,请告诉我我可以用“get”方法定义路由吗?

标签: node.jsexpress

解决方案


我相信你的 routes/handlers.js 看起来像这样

var express = require('express');
var router = express.Router();

function greetUser(req, res){
    res.send("Welcome dear user");
}
router.get("/", greetUser);
router.post("/", (req, res)=>{ res.send("user registered") });

module.exports = router

这里的问题是最后一行,正在导出的这个路由器对象适用于 app.use 中间件,而.get or .post expects 2nd parameter to be a function

如果您也greetUser从路由器导出此功能或从任何地方接收此功能,这应该开始正常运行。实际上会是

app.get("/route1", (req, res)=>{ res.send({status : true, message : "sample JSON"})})

推荐阅读