socket.ioTypescript无法创建服务器,“此表达式不可调用”
我有以下代码(服务器):
import express from "express";
import socketio from "socket.io";
import http from "http";
const app = express();
const server = http.createServer(app);
const io = socketio(server);
server.listen(process.env.port || 3000, () => {
console.log(`App running on port ${process.env.port || 3000}`);
});
但我收到一个错误const io = socketio(server);,它指出:
此表达式不可调用。类型 'typeof import("SOME_PATH/node_modules/socket.io/dist/index")' 没有调用签名
这里究竟有什么问题?
包.json:
"devDependencies": {
"@types/express": "^4.17.11",
"@types/node": "^14.14.27",
"@types/socket.io": "^2.1.13",
"nodemon": "^2.0.7",
"ts-node": "^9.1.1"
},
"dependencies": {
"express": "^4.17.1",
"socket.io": "^3.1.1",
"typescript": "^4.1.5"
}
回答
api在版本3中改变了。这个问题这里有一些讨论。
你的例子的新等价物是
import express from "express";
import { Server } from "socket.io";
import http from "http";
const app = express();
const server = http.createServer(app);
const io = new Server(server);
server.listen(process.env.port || 3000, () => {
console.log(`App running on port ${process.env.port || 3000}`);
});
作为旁注,socket.io 是用打字稿重写的,所以你不再需要@types/socket.io。
THE END
二维码