节点js:当我使用get方法时遇到错误无法获取/ route

时间:2019-06-11 05:42:50

标签: node.js express

当我使用“使用”方法时,我的代码工作正常,但是当我使用“获取”时,它给出了一个错误:“无法获取/ 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”方法定义路由。

3 个答案:

答案 0 :(得分:2)

我相信您的route / 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"})})

答案 1 :(得分:0)

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

这里是docs

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

您只能将get明确定义为独立的get路由。

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

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

答案 2 :(得分:0)

app.get('/ route1',路线);

将是app.use('/ route1',路线);