【发布时间】:2021-07-31 21:14:11
【问题描述】:
我正在使用 typescript 制作一个 node.js 项目。我想将我的 socket.io 代码放在一个单独的文件中进行组织。 我在控制台中看到 socketHandling.ts 在 index.ts 之前加载,我觉得这很奇怪。
但问题是socketHandling.ts中的Typeof server是未定义的。
如何确保在执行 socketHandling.ts 之前定义 index.ts 中的服务器变量?
index.ts
import * as express from "express";
import * as path from "path";
import * as socketHandle from "./socketHandling";
console.log("index.ts loaded");
export const server = express()
.use(express.static(path.join(__dirname, "../../public")))
.set("views", path.join(__dirname, "../../views"))
.set("view engine", "ejs")
.get("/*", httpGet)
.post("/*", httpPost)
.listen(PORT, () => console.log(`Listening on ${PORT}`));
socketHandle.initSockets();
socketHandling.ts
import { Server } from "socket.io";
import { server } from "./index";
console.log("socketHandling.ts loaded");
console.log(server);
const io = new Server(server);
export function initSockets(): void {
io.on("connection", (socket) => {
console.log(`Client connected ${socket.id}`);
socket.on("disconnect", () => {
console.log(`Client disconnected ${socket.id}`);
});
});
}
【问题讨论】:
标签: javascript node.js typescript express socket.io