You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Express+WebSocket服务器根路径直接显示board.html?

解决Express.js根路径自动加载board.html的问题

问题场景

使用Express.js和WebSockets开发双人游戏,目录结构如下:

.
├── public
│   ├── board.html
│   ├── board.js
│   ├── chess.css
│   └── util.js
├── server
│   ├── game.js
│   ├── node_modules
│   ├── package.json
│   ├── package-lock.json
│   └── server.js
└── todo.md

启动node ./server/server.js后,服务器监听8000端口,但访问localhost:8000时页面空白,必须访问localhost:8000/board.html才能显示主页面,需要实现根路径直接加载board.html。

当前server.js核心代码片段:

const app = express();
app.use('/', express.static(`${__dirname}/../public/`));
app.use(cookieParser) // 注意:此处缺少括号,应改为cookieParser()

解决方法

方法1:修改static中间件的默认首页配置

Express的express.static中间件默认会查找目录下的index.html作为首页,只需指定index选项为board.html即可:

app.use('/', express.static(`${__dirname}/../public/`, {
  index: 'board.html'
}));

方法2:添加根路径路由处理

如果需要更灵活的控制(比如根据条件跳转),可以直接给根路径/添加路由:

方案A:重定向到board.html

app.get('/', (req, res) => {
  res.redirect('/board.html');
});

方案B:直接返回board.html文件

app.get('/', (req, res) => {
  res.sendFile(`${__dirname}/../public/board.html`);
});

注意:两种方法任选其一即可,推荐方法1,更符合静态资源服务的设计逻辑。另外别忘了修正cookieParser的调用,添加括号:app.use(cookieParser()),避免后续可能出现的中间件错误。


内容的提问来源于stack exchange,提问作者kyatoukyaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:15:00