const socketio = new Server();
从“socket.io”导入服务器;
SyntaxError:请求的模块“socket.io”不提供名为“default”的导出
有两种导出:命名导出(每个模块几种)和默认导出(每个模块一种)。可以同时使用两者,但通常最好将它们分开。
您为何收到此错误:您编写的导入语句提供了
Server
,这不是默认导出。如果socket.io实际上按如下方式导出了Server,那么您就不会收到错误。
module.exports = {
//Other exports
Server as default
}
你可以这样做:
import * as io from "socket.io"
import express from 'express';
import { createServer } from 'http';
const app = express();
const server = createServer(app);
const socketio = new io.Server(server);
编辑:
你可以像这样导入socket.io:
import { Server } from 'socket.io';
import express from 'express';
import { createServer } from 'http';
const app = express();
const server = createServer(app);
const socketio = new Server(server);
我不敢相信 Socket.io 让导入他们的 npm 包变得如此困难。
这就是答案。谢谢@MeghAgarwal
import { Server } from 'socket.io';
import express from 'express';
import { createServer } from 'http';
const app = express();
const server = createServer(app);
const socketio = new Server(server);
从 v3 开始,正确的做法是:
const httpServer = require('http').createServer((req, res) => {
res.setHeader('Content-Type', 'text/html');
res.setHeader('Content-Length', Buffer.byteLength(content));
res.end(content);
});
// Or const httpServer = require('http').createServer(app) if you use express
const io = require('socket.io')(httpServer);
如果您
import * as io from 'socket.io'
,您必须致电io.io(httpServer)
。我遇到了同样的错误
我遇到了同样的错误。这对我有用
const express = require('express');
const app = express();
const io = require("socket.io")(80);
const http = require("http");
const server = http.createServer(app);
我只是犯了一个愚蠢的错误......而不是安装
socket.io
,我安装了过时的socketio
,它不支持TS
。