我正在使用 websockets 和express js 制作一个两人游戏,文件夹的组织方式如下。
.
├── 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 上运行并侦听,但没有任何显示。使其显示主页(board.html)。我必须访问 localhost:8000/board.html,但我不想要这样。
我的 server.js 看起来像这样。`
const http = require('http');
const express = require('express');
const cookieParser = require('cookie-parser');
const socketio = require('socket.io');
const { gameEnd, generateID } = require('./game.js');
let games = {};
const app = express();
app.use('/', express.static(`${__dirname}/../public/`));
app.use(cookieParser)
const server = http.createServer(app);
const io = socketio(server, {
handlePreflightRequest: (req, res) => {
const headers = {
"Access-Control-Allow-Headers": "Content-Type, Authorization",
"Access-Control-Allow-Origin": req.headers.origin, //or the specific origin you want to give access to,
"Access-Control-Allow-Credentials": true
};
res.writeHead(200, headers);
res.end();
}
});
server.on('error', (err) => console.error(err));
server.listen(8000, () => {
console.log('server is ready');
})
我希望我的应用程序在访问 localhost:8000 时立即显示 board.html。我可以做什么来实现这一目标?
我尝试将文件放在服务器文件夹之外并将它们放在根目录中,但没有成功。
由于您使用
app.use(express.static(
${__dirname}/../public/));
Express 将 url 路径名映射到公共文件夹中的每个文件。
但是既然你想将
board.html
设置为主页,你就必须定义它。
为此,您可以在静态文件服务之后添加这行代码。
像这样的东西:
app.use(express.static(`${__dirname}/../public/`));
app.get('/', (req, res) => {
res.sendFile(`${__dirname}/../public/board.html`);
});