Estoy tratando de usar TypeScript con socket.io en mi cliente:
import { Manager, Socket} from "socket.io-client"; import {DefaultEventsMap} from "@socket.io/component-emitter"; export class SocketIoService { private socket: Socket<DefaultEventsMap, DefaultEventsMap> constructor() { const manager = new Manager("http://localhost:3000"); this.socket = manager.socket("/"); } public connect() { this.socket.emit("hello"); this.socket.on("noArg", () => { // ... }); this.socket.on("basicEmit", (a, b, c) => { // a is inferred as number, b as string and c as buffer console.log(a + b + c); }); } }El problema es que cuando inicio mi servidor me sale el siguiente error:
The requested module './../../../parseuri/index.js' does not provide an export named 'default'¿Qué he hecho mal?
Servidor:
import { Server } from "socket.io"; const io = new Server(httpServer);Cliente:
import { Manager } from "socket.io-client"; const manager = new Manager("http://localhost:3000"); const socket = manager.socket("/");(esto debería haber sido un comentario pero no tengo suficiente representante para comentar)
El error significa que está intentando realizar una default import desde un módulo que tiene exportaciones denominadas.
¿Puedes adjuntar el stacktrace del error?
Estoy interesado en el módulo que activa la importación a './../../../parseuri/index.js'.
No estoy completamente seguro de cómo se relaciona el error con este código específico. Acabo de crear una carpeta vacía, agregué su código y con un tsconfig.json vacío pude compilar. Aquí está el código compilado:
"use strict"; exports.__esModule = true; exports.SocketIoService = void 0; var socket_io_client_1 = require("socket.io-client"); var SocketIoService = /** @class */ (function () { function SocketIoService() { var manager = new socket_io_client_1.Manager("http://localhost:3000"); this.socket = manager.socket("/"); } SocketIoService.prototype.connect = function () { this.socket.emit("hello"); this.socket.on("noArg", function () { // ... }); this.socket.on("basicEmit", function (a, b, c) { // a is inferred as number, b as string and c as buffer console.log(a + b + c); }); }; return SocketIoService; }()); exports.SocketIoService = SocketIoService;Yo sugeriría hacer:
$ rm -rf node_modules $ npm iY volver a intentarlo.