模块"缓冲区"没有导出的成员"Blob"



以前有人遇到过这种情况吗? 我使用 CI/CD 运行我的代码 嵌套构建后,它给了我错误:node_modules/@types/superagent/index.d.ts:23:10 - error TS2305: Module '"buffer"' has no exported member 'Blob'. 23 import { Blob } from "buffer";

我不知道为什么?如果您有解决方案,请分享。

将 nest 7.5.x 升级到 8.0.0 后,我们遇到了同样的问题。"nestjs/testing"的依赖"supertest"依赖于"@types/superagent": "*"通配符"@types/supertest",并且该依赖关系具有另一个通配符依赖"@types/node": "*",但@types/supertest中的类型实际上需要@types/节点>=16.X.X。

所以nestjs/testing -> supertest -> @types/supertest -> @types/superagent -> @types/node >= 16.X.X你的问题和错误。

提到的注释是准确的,因为这些包管理器对其依赖项进行通配符以获取最新版本的依赖项。它们应该但不添加具有依赖关系要求的对等依赖关系,例如"@types/node": "">=12.0.0 <16.0.0"。相反,他们说什么,"@types/node": "*"所以错误是软件包安装后,没有 npm 警告/错误。"它昨天有效但今天不起作用"是您最大的危险信号,因为当您运行时npm install,即使您不知道它安装了最新版本,也会使用这些通配符依赖项。由于它今天安装了所有通配符,而不是昨天,因此它昨天工作。

此外,同样重要的是,您已固定@types/节点<16.0.0,因此您的错误与其他包相结合会发生变化。

一种选择:还原您的 package-lock.json 更改并运行npm ci

另一种选择:将 @types/节点的 package.json 依赖项设置为 ->"@types/node": "^16.0.0",

另一种选择:接受通配符是错误的,你不相信那里发生了什么,所以将@types/超级代理依赖项固定到前面的依赖项。

至于我和我的家人,我们将 nestjs 与运行时不包括 nodejs 16 的 AWS lambda 一起使用,而且并非我团队中的每个人都运行npm ci我们通常运行npm install所以解决方案是

包.json

...
"devDependencies": {
...
"@types/node": "14.18.2",
"@types/superagent": "4.1.10",
"@types/supertest": "^2.0.11",
...

@types/节点升级到^14.18.10并将打字稿升级到^3.9.10对我有用。

"devDependencies": {
"@types/node": "^14.18.10",
"typescript": "^3.9.10"
},

在 Github 的此讨论中找到

将@types/超级代理从 v15.x.x 降级到 14.1.14 为我解决了这个问题。 v15 在键入此消息时存在一些性能问题 "npm i --save @types/superagent@4.1.14"成功了

一个提示是使用npm 视图来获取一些信息。

如果您键入

npm view @types/node

这显示了ts版本兼容性。就我而言,必须将@types/节点升级到 14.14.31,因为我使用的是 ts 3.4.2。

如果您已经安装了 npm,则删除node_module文件并使用 yarn install 添加新node_module,反之亦然。

最新更新