You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:10:56