繁体   English   中英

如何导入 socket.io npm 包 - Nodejs

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM