【发布时间】:2021-05-17 00:58:45
【问题描述】:
我有以下代码(服务器):
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); 上收到错误消息,它指出:
此表达式不可调用。键入'类型 import("SOME_PATH/node_modules/socket.io/dist/index")' 没有调用 签名
这到底是什么问题?
package.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"
}
【问题讨论】:
-
看起来
socket.io提供了自己的类型,但这些缺少默认的导出工厂。我要么打开一个issue,要么弄清楚如何告诉 TypeScript 不要使用来自 node_modules/socket.io 的类型,而是使用来自 node_modules/@types/socket.io 的类型。 -
你检查所有类型都安装了吗?试试
npm i确定
标签: node.js typescript types socket.io