点击EJS页面跳转按钮出现Cannot GET /edit.ejs报错如何解决
问题根因
你直接在<a>标签的href属性中填写EJS模板文件名edit.ejs是错误的。EJS是服务端渲染的模板文件,存放在views目录下的模板默认不会作为静态资源直接对外开放,Node服务不会直接响应模板文件本身的GET请求,需要通过服务端定义路由、渲染模板后再返回前端内容。
排查解决步骤
- 检查server.js中的EJS基础配置是否正确,确认已指定模板引擎和模板存放目录,参考配置:
const express = require('express') const app = express() // 指定使用EJS作为模板引擎 app.set('view engine', 'ejs') // 指定模板文件存放目录,匹配你存放在views/pages的场景 app.set('views', './views/pages')
- 在server.js中新增
/edit路径的GET路由,在路由逻辑中渲染edit.ejs模板:
app.get('/edit', (req, res) => { // 第二个参数为传入模板的动态变量,无变量可传空对象 res.render('edit', {}) })
- 修改前端页面的a标签href属性,替换为你定义的路由路径:
将原有代码
<a class="nav-link" href="edit.ejs">Lets edit stuff</a>
修改为
<a class="nav-link" href="/edit">Lets edit stuff</a>
- 重启Node服务后再次点击按钮测试即可。如果仍然报错,检查
edit.ejs是否确实存放在views/pages目录下,文件名大小写是否和render参数中的edit匹配。
内容的提问来源于stack exchange,提问作者Robotboy
相关产品推荐
相关产品推荐

