英文:
types/ws Type 'Server' is not generic
问题
突然出现了这个错误:
TypeScript: ./../../node_modules/@types/ws/index.d.ts:328:18
Type 'Server' is not generic.
Angular CLI: 13.3.11
Node: 16.13.2
包管理器: npm 8.1.2
操作系统: win32 x64
Angular: 13.4.0
... common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router, service-worker
包版本
@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,但未成功。
英文:
Suddenly getting this error:
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
Already tried to update @types/ws to version ^8.13.0 with no success
答案1
得分: 7
我遇到了相同的问题
npm i @types/ws@8.5.4
对我有效。
英文:
I had the same issue
npm i @types/ws@8.5.4
worked for me.
答案2
得分: 3
我花了两天的时间来更新和降级 @types/node 和 @types/express。最后,我将我的 Angular 项目从 14 版本升级到了 15 版本,一切都再次完美运行。
英文:
I spent two days on this updating and downgrading @types/node and @types/express. In the end I updated my angular project from 14 to 15 and everything worked perfectly again.
答案3
得分: 3
我们在一个相对老的Angular项目的构建流程中遇到了这个问题。奇怪的是,自2023年6月以来,每隔一个构建就会失败。我成功解决了这个问题,如下所述。我的解决方案基于Salmin Skenderovic在Zen Donegan的答案下面所说的。
-
在packages.json中,我添加了这个依赖项:
`"@types/ws" : "<8.5.5>",
假设问题在@types/ws v8.5.5中,因此在它修复之前,我们想要使用任何版本低于 8.5.5。
-
在编译之前,我需要运行一次以下命令:
npm i --legacy-peer-deps
这个命令会更新package-lock.json。这个配置文件“冻结”了项目中所有Angular依赖项,以确保它们是当前可用的。
英文:
We had this issue in the build pipeline of a -fairly old- Angular project. Peculiarly, it failed every other build, since June 2023. I managed to resolve the issue as explained below. My solution is based on the remark of Salmin Skenderovic below the answer of Zen Donegan.
-
In packages.json, I have added this dependency:
"@types/ws" : "<8.5.5",
The assumption is that the bug is in @types/ws v8.5.5, so until it is fixed we want to use any version below 8.5.5.
-
Before compiling, I needed to run this once:
npm i --legacy-peer-deps
This command updates package-lock.json. This configuration file "freezes" all Angular dependencies for the project to a currently working set.
答案4
得分: 0
我删除了文件夹 node_modules/@types/ws
,这对我有用。
下次我会使用 npm i --legacy-peer-deps
安装我的包。
英文:
I removed the folder node_modules/@types/ws
and that worked for me.
Next time I'll install my package using npm i --legacy-peer-deps
.
答案5
得分: 0
我遇到了类似的问题,但另外我还收到了以下消息:../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; }'.
所以,我所做的就是根据错误消息中的说明(顺便说一句,开发者已经添加了TODO注释),向global.d.ts文件的AbortSignal
变量中添加了两行代码:
declare var AbortSignal: {
prototype: AbortSignal;
new(): AbortSignal;
// TODO: Add abort() static
abort(reason?: any): AbortSignal; // <--------------lines which I added
timeout(milliseconds: number): AbortSignal; //------|
};
之后,将其转换为JS就没有问题了
英文:
I had similar problem, but additionally I got following message: ../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; }'.
So, what I did is simply added two lines of code to the global.d.ts to the AbortSignal
variable, as it was stated in the error message (btw there was already TODO comment from developers):
declare var AbortSignal: {
prototype: AbortSignal;
new(): AbortSignal;
// TODO: Add abort() static
abort(reason?: any): AbortSignal; // <--------------lines which I added
timeout(milliseconds: number): AbortSignal; //------|
};
After that, converting to JS was without problems
答案6
得分: 0
当我遇到这个错误时,我发现它是由于我的@types/node
包中的问题引起的。当我遇到错误时,我使用的是版本17。我尝试了其他每个主要版本,都没有错误。
所以我认为这实际上不是与ws模块有关的问题,正如其他人所建议的那样,而是与ws和某些版本的@types/node之间的问题。
英文:
When I encountered this error, I discovered that it was due to an issue in my @types/node
package. I was on version 17 when I got the error. Every other major version I tried worked fine, no error.
So I don't think it is actually an issue with the ws module, as others have suggested, but rather an issue between ws and certain versions of @types/node.
答案7
得分: 0
我在我的package.json中有一个相当旧的@types/node
版本,它与我的实际Node.js版本不匹配。
我使用以下命令删除了这个明确的依赖项:
npm uninstall @types/node
(并让npm处理与实际对等依赖项的魔法)。
英文:
I had a pretty old version of @types/node
defined in my package.json which did not match my actual version of Node.js.
i removed that explicit dependency with
npm uninstall @types/node
(and let npm do the magic with an actual peer dependency).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论