[英]How to import socket.io npm packege - Nodejs
知道为什么我会出错吗?
import Server from 'socket.io';
const socketio = new Server();
错误
import Server from 'socket.io';
^^^^^^
SyntaxError: The requested module 'socket.io' does not provide an export named 'default'
有两种导出:命名导出(每个模块多个)和默认导出(每个模块一个)。 可以同时使用两者,但通常最好将它们分开。
为什么会收到此错误:您编写的导入语句提供的Server
不是默认导出。 如果 socket.io 实际导出了如下所示的服务器,那么您将不会收到错误消息。
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);
从 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)
。 我遇到了同样的错误
我不敢相信 Socket.io 让导入他们的 npm package 变得如此困难。
这是答案。 谢谢@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);
我得到了同样的错误。 这对我有用
const express = require('express');
const app = express();
const io = require("socket.io")(80);
const http = require("http");
const server = http.createServer(app);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.