突然出现此错误:
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但没有成功
我也有同样的问题
npm i @types/[email protected]
为我工作。
我在 package.json 中定义了一个相当旧的
@types/node
版本,它与我的 Node.js 实际版本不匹配。
我删除了显式依赖
npm uninstall @types/node
(让 npm 通过实际的对等依赖来发挥魔力)。
我花了两天时间更新和降级@types/node 和@types/express。最后,我将我的 Angular 项目从 14 更新到 15,一切都再次完美运行。
我们在一个相当古老的 Angular 项目的构建管道中遇到了这个问题。奇怪的是,自 2023 年 6 月以来,它的所有其他构建都失败了。我设法解决了这个问题,如下所述。我的解决方案基于 Zen Donegan 的答案下方 Salmin Skenderovic 的评论。
在packages.json中,我添加了这个依赖项:
“@types/ws”:“<8.5.5",
假设该错误存在于 @types/ws v8.5.5 中,因此在修复该错误之前,我们希望使用低于 8.5.5 的任何版本。
在编译之前,我需要运行一次:
npm i --legacy-peer-deps
此命令更新 package-lock.json。此配置文件将项目的所有 Angular 依赖项“冻结”到当前工作集。
我有类似的问题,但另外我收到以下消息:
../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就没有问题了:)
当我遇到此错误时,我发现这是由于我的
@types/node
包中的问题造成的。出现错误时我正在使用版本 17。我尝试过的所有其他主要版本都工作正常,没有错误。
所以我不认为这实际上是 ws 模块的问题,正如其他人所建议的那样,而是 ws 和某些版本的 @types/node 之间的问题。
我删除了文件夹
node_modules/@types/ws
,这对我有用。
下次我将使用 npm i --legacy-peer-deps
安装我的软件包。
我刚刚改变了
"@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
成功了