types/ws 类型“服务器”不是通用的

问题描述 投票:0回答:8

突然出现此错误:

TypeScript: ./..\..\node_modules\@types\ws\index.d.ts:328:18
       Type 'Server' is not generic.


Angular CLI: 13.3.11
Node: 16.13.2
Package Manager: npm 8.1.2
OS: win32 x64

Angular: 13.4.0
... common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router, service-worker

Package Version
@angular-devkit/architect 0.1303.11
@angular-devkit/build-angular 13.3.11
@angular-devkit/core 13.3.11
@angular-devkit/schematics 13.3.11
@angular/cli 13.3.11
@angular/pwa 13.3.11
@schematics/angular 13.3.11
rxjs 6.6.7
typescript 5.1.3

已经尝试将@types/ws更新到版本^8.13.0但没有成功

angular typescript ionic-framework
8个回答
37
投票

我也有同样的问题

npm i @types/[email protected]
为我工作。


11
投票

我在 package.json 中定义了一个相当旧的

@types/node
版本,它与我的 Node.js 实际版本不匹配。

我删除了显式依赖

npm uninstall @types/node
(让 npm 通过实际的对等依赖来发挥魔力)。


6
投票

我花了两天时间更新和降级@types/node 和@types/express。最后,我将我的 Angular 项目从 14 更新到 15,一切都再次完美运行。


3
投票

我们在一个相当古老的 Angular 项目的构建管道中遇到了这个问题。奇怪的是,自 2023 年 6 月以来,它的所有其他构建都失败了。我设法解决了这个问题,如下所述。我的解决方案基于 Zen Donegan 的答案下方 Salmin Skenderovic 的评论。

  1. 在packages.json中,我添加了这个依赖项:

    “@types/ws”:“<8.5.5",

假设该错误存在于 @types/ws v8.5.5 中,因此在修复该错误之前,我们希望使用低于 8.5.5 的任何版本。

  1. 在编译之前,我需要运行一次:

    npm i --legacy-peer-deps

此命令更新 package-lock.json。此配置文件将项目的所有 Angular 依赖项“冻结”到当前工作集。


2
投票

我有类似的问题,但另外我收到以下消息:

../node_modules/@types/node/globals.d.ts:72:13 - error TS2403: Subsequent variable declarations must have the same type.  Variable 'AbortSignal' must be of type '{ new (): AbortSignal; prototype: AbortSignal; abort(reason?: any): AbortSignal; timeout(milliseconds: number): AbortSignal; }', but here has type '{ new (): AbortSignal; prototype: AbortSignal; }'.

所以,我所做的只是将两行代码添加到 global.d.ts 的

AbortSignal
变量中,正如错误消息中所述(顺便说一句,开发人员已经有 TODO 注释):

declare var AbortSignal: {
    prototype: AbortSignal;
    new(): AbortSignal;
    // TODO: Add abort() static
    abort(reason?: any): AbortSignal; // <--------------lines which I added
    timeout(milliseconds: number): AbortSignal; //------|
};

之后转换成JS就没有问题了:)


2
投票

当我遇到此错误时,我发现这是由于我的

@types/node
包中的问题造成的。出现错误时我正在使用版本 17。我尝试过的所有其他主要版本都工作正常,没有错误。

所以我不认为这实际上是 ws 模块的问题,正如其他人所建议的那样,而是 ws 和某些版本的 @types/node 之间的问题。


1
投票

我删除了文件夹

node_modules/@types/ws
,这对我有用。 下次我将使用
npm i --legacy-peer-deps
安装我的软件包。


0
投票

我刚刚改变了

"@types/ws": "^8.5.4", 

"@types/ws": "8.5.4",

然后

rm -rf node_modules package-lock.json

npm cache clean --force
npm install --legacy-peer-deps
npm start

成功了

© www.soinside.com 2019 - 2024. All rights reserved.