如何导入socket.io npm包-Nodejs

问题描述 投票:0回答:5
const socketio = new Server();

从“socket.io”导入服务器;
SyntaxError:请求的模块“socket.io”不提供名为“default”的导出

javascript node.js socket.io
5个回答
14
投票

有两种导出:命名导出(每个模块几种)和默认导出(每个模块一种)。可以同时使用两者,但通常最好将它们分开。

您为何收到此错误:您编写的导入语句提供了

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);

4
投票

我不敢相信 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);

1
投票

从 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)
。我遇到了同样的错误


0
投票

我遇到了同样的错误。这对我有用

const express = require('express');
const app = express();

const io = require("socket.io")(80);
const http = require("http");
const server = http.createServer(app);

0
投票

我只是犯了一个愚蠢的错误......而不是安装

socket.io
,我安装了过时的
socketio
,它不支持
TS

© www.soinside.com 2019 - 2024. All rights reserved.