node.js - socket.io Typescript נכשל ביצירת שרת, "ביטוי זה אינו ניתן לקריאה"


יש לי את הקוד הבא (שרת):

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")' אין לו חתימות קריאה

מה בדיוק הבעיה כאן?

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"
  }

תשובה #1

הממשק השתנה בגרסה 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 נכתב מחדש ב-Typescript, כך שאין צורך יותר ב-@types/socket.io.