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