node.js - 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”方法定义路由吗?
解决方案
我相信你的 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"})})
推荐阅读
- svg - 从 svg 中剪切对象
- progress-bar - 布尔玛进度文本在中间
- amazon-web-services - 无法使用 AWS Schema Conversion Tool 连接到 Amazon Aurora (MySQL)
- javascript - 带有动态选择框的动态表单 - Laravel
- python - Python:让一个函数调用另一个已输入参数的函数
- swift - 如何调整 SKShapeNode 的大小?
- ios - React-Native 可访问性限制 fontSize 缩放
- apache-spark - 从 Spark 数据集中收集结果的最佳方法是什么?
- c# - Asp.Net Core MVC Ajax 标签助手 - 从控制器返回错误不起作用
- java - NoSuchMethodError:javax.ws.rs.core.MultivaluedMap.addAll