如何让localhost正常显示数据?EJS页面无法加载访问该怎么解决
问题排查与修复方案
- 核心错误:body-parser 中间件未正确调用
你代码中app.use(bodyparser.json)缺少执行括号,应该改为app.use(bodyparser.json())。未执行的中间件会拦截所有请求不做处理,直接导致请求一直处于挂起状态,超时后就会显示无法访问页面,这是你遇到问题的最主要原因。 - 待确认项:EJS模板文件路径是否正确
Express默认会从项目根目录下的views文件夹读取EJS模板,你需要确认根目录存在views/base.ejs文件,否则渲染模板时会抛出错误,导致页面加载失败。 - 待排查项:路由文件是否存在异常
你可以先注释掉app.use('/route', router)这行代码后重启服务,测试首页是否可以正常访问,排除自定义路由文件中出现的中间件未执行next()、路由逻辑错误等问题。 - 待排查项:端口是否被占用
如果启动服务时终端没有输出listening to request on http://localhost:${PORT}的日志,说明端口被其他进程占用,你可以执行对应命令查询占用进程:- Windows系统:
netstat -ano | findstr 3000 - Mac/Linux系统:
lsof -i:3000
杀掉占用进程或者更换未被使用的端口即可。
- Windows系统:
修复后的代码
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 // const PORT = process.env.PORT || 8080 // 修复:添加括号调用json中间件 app.use(bodyparser.json()) app.use(bodyparser.urlencoded({extended:true})) app.set('view engine', 'ejs') //Load static assets app.use('/static',express.static(path.join(__dirname,'public'))) app.use('/assets',express.static(path.join(__dirname,'public/assets'))) app.use(session({ secret: uuidv4(), resave: false, saveUninitialized: true })) app.use('/route', router) //Home route app.get('/', (req,res)=>{ res.render('base',{title: 'Login System'}) }) app.listen(PORT,()=>{ console.log(`listening to request on http://localhost:${PORT}`) })
内容的提问来源于stack exchange,提问作者Emmanuel Joseph
相关产品推荐
相关产品推荐

