Node+Express项目中EJS模板引擎无法渲染视图问题求助
解决Express + EJS中“Cannot GET /”的问题
我帮你分析下问题所在:你已经在landing.js里定义了根路径/的GET路由,但没有把这个路由挂载到你的Express应用上,所以应用根本不知道这个路由的存在,自然会返回Cannot GET /的404错误。
下面是具体的修复步骤:
1. 修改startup/routes.js文件,注册landing路由
你的index.js里调用了require('./startup/routes')(app),说明routes.js负责注册所有应用路由。你需要在这里导入landing.js的路由,并挂载到应用上:
// startup/routes.js module.exports = function(app) { // 导入landing路由(注意路径要和你的文件结构匹配) const landingRouter = require('../landing'); // 将landing路由挂载到根路径/ app.use('/', landingRouter); // 这里可以继续添加其他路由的注册逻辑 }
2. 确认文件路径是否正确
确保你的项目文件结构和导入路径匹配,比如典型的结构应该是这样:
你的项目根目录/ ├── index.js ├── landing.js ├── startup/ │ ├── routes.js │ ├── logging.js │ ├── db.js │ └── server.js └── views/ └── landing.ejs
如果landing.js和startup文件夹同级,那么../landing这个导入路径就是正确的;如果位置不同,需要调整路径。
为什么之前会报错?
Express的路由系统需要通过app.use()或者app.METHOD()来注册路由。你在landing.js里用router.get('/', ...)只是定义了一个路由模块,但没有把这个模块和你的Express应用实例关联起来,所以当浏览器请求/时,应用找不到对应的处理逻辑,就返回了404错误。
内容的提问来源于stack exchange,提问作者NodeReact020
相关产品推荐
相关产品推荐

