无法分配给对象“#<Object>”react 和套接字的只读属性“exports”

moh*_*geh 5 node.js socket.io reactjs

当我尝试在react中使用socket时,我遇到了这个问题,我知道它说我应该使用export default而不是module.export,但是这段代码存在于socket包本身中,当我通过错误更改它时

我使用节点版本 v14.17.0

这些是我使用的包和反应版本

  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-scripts": "4.0.3",
    "socket.io-client": "^4.3.1",
    "web-vitals": "^1.0.1"
  },
Run Code Online (Sandbox Code Playgroud)

这是套接字包中导致此错误的代码段

Object.assign(lookup, {
    Manager,
    Socket,
    io: lookup,
    connect: lookup,
});
if (typeof module !== "undefined") {
    module.exports = lookup;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

abo*_*eep 1

此错误意味着您正在尝试在 ES 模块内使用 commonJS。相反,尝试这样做:

export default lookup
Run Code Online (Sandbox Code Playgroud)

当您实例化查找对象时。module.exports 是 commonJS 方式导出,而 webpack 使用 ES 语法