套接字 IO 客户端 + React Typescript + 上下文 API 导致类型错误:无法将对象"#"分配给只读属性"导出"<Object>



我使用上下文API将socket io客户端实例委托给其他子组件,一旦我声明了socket io客户端实例,react app抛出TypeError:不能分配给对象#的只读属性'exports'

import { createContext } from 'react';
import { io } from "socket.io-client";
const socket = io("http://localhost:5000"); // < once this line is added, throws error
export const SocketContext = createContext({});
export function SocketProvider(props: any) {
return (
<SocketContext.Provider value={{}}>
{props.children}
</SocketContext.Provider>
)
}

我也有同样的问题,我的问题是由于我的(socket.io-client)版本,我通过将版本降级到2.1.1来修复它这对我来说很有效。

通过此引用https://flaviocopes.com/cannot-assign-readonly-property-export/问题是由于函数的声明方式和最新版本的(socket.io-client)有一个typescript,但在我已经降级到没有typescript的版本,这是解决方案。

这也发生在我身上。这个问题来自socket.io-client。最好的解决办法是降级插座。Io-client版本为4.3.0npm install socket.io-client@4.3.0

相关内容