使用Node.js渲染页面时出现404错误,如何解决?
问题分析与解决
你遇到的404和req.params.name无法获取的问题,核心原因是路由没有定义参数占位符,导致动态路径无法被匹配。
问题根源
当前你的子路由只匹配/profile这个固定路径,但动态个人资料页需要匹配/profile/[用户名]这类带参数的路径。原路由里的router.get('/')不会捕获带参数的请求,所以访问/profile/xxx时会返回404,同时req.params.name也会是空值。
修复步骤
- 修改profile路由文件,将路由路径改为带参数占位符的
/:name,这样Express才能解析URL中的用户名参数:
var express = require('express'); var router = express.Router(); var mongoose = require('mongoose'); /* GET profile home page. */ router.get('/:name', function(req, res, next) { res.render('profile', {name: req.params.name}) }); module.exports = router
- 确认视图文件存在:确保
profile对应的模板文件(比如profile.ejs或你使用的其他模板格式)放在Express配置的视图目录下(默认是项目根目录的views文件夹),避免渲染时找不到视图文件。
测试验证
修改完成后,访问类似http://localhost:3000/profile/你的用户名的路径,就能正确渲染个人资料页,且req.params.name会被正确传递到模板中。
内容的提问来源于stack exchange,提问作者fowwest74
相关产品推荐
相关产品推荐

