【问题标题】:Node js: getting an error Cannot GET /route when i use get methodNode js:当我使用get方法时出现错误无法获取/路由
【发布时间】:2019-06-11 05:42:50
【问题描述】:

当我使用“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”方法定义路由吗?

【问题讨论】:

  • 你的 /routes/handlers 里面有什么?

标签: node.js express


【解决方案1】:

我相信你的 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"})})

【讨论】:

    【解决方案2】:

    如果您使用的是路由器,则无法使用 get 方法。

    这里是docs

    只有处理程序才能访问 get 方法。 app.use 将添加指向获取、发布等的 api 路由的路径。

    您只能将 get 显式定义为独立的 get 路由。

    app.get('/route1', (req, res) => {
       res.send("You have hit route1 - get");
    });
    

    使用路由器时,您只能将路由器对象作为参数包含在app.use(path, routerObj) 方法中

    【讨论】:

      【解决方案3】:

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

      应该是 app.use('/route1', routes);

      【讨论】:

        猜你喜欢
        • 2015-11-04
        • 1970-01-01
        • 2021-06-23
        • 2018-07-25
        • 2021-03-12
        • 2016-07-06
        • 2017-04-27
        • 2020-10-23
        • 2012-03-17
        相关资源
        最近更新 更多