我正在开发一个. io风格的多人游戏,使用Socket.io和SvelteKit,当使用开发服务器在本地托管项目时,一切正常,但是当我部署到Vercel时,它记录Failed to load resource: the server responded with a status of 404 ()
。
这是我当前的express服务器.ts(不起作用)
import http from "HTTP";
import { handler } from './build/handler.js';
// Gives error: An import path cannot end with a '.ts' extension.
import injectSocketIO from "src/lib/socket-handler.ts";
import express from 'express';
const app = express();
const server = http.createServer(app);
injectSocketIO(server)
app.use(handler);
// Should I change something here?
server.listen(3000, () => {
console.log('Running on http://localhost:3000');
});
我可以使用vite插件在本地运行开发服务器,如下所示:
import injectSocketIO from "./src/lib/socket-handler";
plugins: [sveltekit(), {
name: "sveltekit-socket-io",
configureServer(server) {
injectSocketIO(server.httpServer);
},
}],
我试着按照这里列出的步骤操作,但是我使用的是socket-handler.ts
而不是socket-handler.js
,而且我不熟悉如何设置启动脚本以在Vercel中运行。如有任何帮助,我将不胜感激!
1条答案
按热度按时间8zzbczxx1#
我仍在寻找更好的方法,但我通过将Express服务器从Svelte
src
目录中取出来修复了相同的问题。我的代码和你的一样,只是从根目录导入
socket-handler.js
:现在运行
npm run build && node server.js
构建Svelte应用程序,然后启动Express服务器。这个tutorial让我想到了那个解决方案,你基本上运行一个标准的Express服务器,添加socket.io,然后让SvelteKit使用Express中间件处理剩下的事情。