NextJs(TS)移植WebSocket代码遇类型错误的解决过程
解决Next.js(TypeScript)中ws库WebSocket实例化的类型错误
问题场景
将以下JavaScript的WebSocket代码移植到Next.js(TypeScript)项目时触发类型错误:
const WebSocket = require("ws"); var ws = new WebSocket( "wss://exemple.com/?user=data", { credentials: "omit", headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0", Accept: "*/*", "Accept-Language": "fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3", "Sec-WebSocket-Version": "13", "Sec-WebSocket-Extensions": "permessage-deflate", "Sec-Fetch-Dest": "websocket", "Sec-Fetch-Mode": "websocket", "Sec-Fetch-Site": "cross-site", "Sec-GPC": "1", Pragma: "no-cache", "Cache-Control": "no-cache", }, method: "GET", mode: "cors", } ); ws.on("message", function (data, flags) { //do some stuff with the data });
错误信息
Argument of type '{ credentials: string; headers: { "User-Agent": string; Accept: string; "Accept-Language": string; "Sec-WebSocket-Version": string; "Sec-WebSocket-Extensions": string; "Sec-Fetch-Dest": string; "Sec-Fetch-Mode": string; "Sec-Fetch-Site": string; "Sec-GPC": string; Pragma: string; "Cache-Control": string; }; method: ...' is not assignable to parameter of type 'string | string[]'. Object literal may only specify known properties, and 'credentials' does not exist in type 'string[]'.ts(2345)
尝试过的无效方案
使用websocket-ts库的WebsocketBuilder重构代码,未解决问题。
有效解决方案
安装ws库的TypeScript类型定义文件:
npm i @types/ws
内容的提问来源于stack exchange,提问作者Søren Kierkegaard
相关产品推荐
相关产品推荐

