Socket.IO在使用Vite打包的React应用中无法工作(但在使用Webpack打包时可以正常工作)

7

我有一个使用Create React App创建的项目,现在已经迁移到了Vite。
我使用socket.io-client库。

这两个版本的应用程序完全相同(只是简单的复制/粘贴),除了打包工具不同之外。

这是我的websocket连接。

import { io } from 'socket.io-client'

export function App() {
  useEffect(() => {
    io('http://my-server')
  })
}

在 webpack 版本中,我可以在网络选项卡中看到 socket.io 正在尝试连接。
但是在 vite 版本中没有看到这种情况,甚至没有抛出错误。
我该如何解决这个问题?这是否与 Vite 仅支持 ESM 包而不支持 CommonJS 有关?
1个回答

3
最终我通过在连接中指定transports属性来解决了这个问题,如下所示:
io('http://my-server', {
    transports: ['websocket'], // Required when using Vite      
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接