Express无法路由跳转 报错Cannot GET /route/studentlogin问题咨询
问题原因与解决方案
该报错由两处代码语法书写错误导致,按如下步骤修复即可:
- 错误1:
server.js中错误使用app.arguments注册中间件
Express 注册中间件的正确方法是app.use(),arguments是JS函数内置的参数对象,不属于Express实例的方法,会导致你后续的body-parser、session、路由规则全部注册失效。
将server.js中所有的app.arguments替换为app.use即可,修复后的完整server.js代码如下:
const express=require('express'); const path=require('path'); const bodyparser=require('body-parser'); const session=require('express-session'); const{v4:uuidv4}=require('uuid'); const router=require('./router'); const app=express(); const port=process.env.PORT||3000; app.use(bodyparser.json()) app.use(bodyparser.urlencoded({extended:true})) app.set('view engine','ejs'); app.use(session({ secret:uuidv4(), resave: false, saveUninitialized: true })); app.use('/route',router) //home route app.get('/',(req,res)=>{ res.render('home'); }) app.listen(port,()=>{console.log("Listening to the server on http://localhost:3000")});
- 错误2:
router.js中导出路由语法错误
Node.js CommonJS规范的导出语法是小写开头的module.exports,你写的大写开头的Module.exports属于自定义变量,没有赋值给标准导出对象,会导致server.js引入的router是undefined,路由规则完全不生效。
将router.js最后一行的Module.exports改为module.exports即可,修复后的完整router.js代码如下:
var express=require('express'); var router=express.Router(); //student login page router.get("/studentlogin",(req,res)=>{ res.end("Login Successfull"); }) module.exports=router;
两处错误修复完成后重启Express服务,点击学生登录按钮即可正常返回Login Successfull。
内容的提问来源于stack exchange,提问作者TOP 10
相关产品推荐
相关产品推荐

