模块“"buffer"”没有导出成员 'Blob'

Module '"buffer"' has no exported member '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/supertest" 通配符 "@types/superagent": "*",并且该依赖项具有另一个通配符依赖项 "@types/node": "*",但 @[= 中的类型50=] 实际上需要@types/node >=16.X.X.

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

提到的评论是准确的,因为这些包管理器通配它们的依赖项以获得最新版本的依赖项。他们应该但不添加具有 "@types/node": "">=12.0.0 <16.0.0" 等依赖项要求的 peerDependencies。相反,他们什么都不说,"@types/node": "*" 所以错误是 post 包安装,没有 npm warnings/errors。 “它昨天有效但今天无效”是你的 大红旗 因为当你 运行 npm install 时,即使你不知道它安装了这些通配符依赖项最新版本。因为它今天安装了所有通配符,而不是昨天,所以它昨天工作了。

此外,同样重要的是你已经固定了@types/node <16.0.0 因此你的错误与其他包的组合发生了变化。

一个选项: 还原您的 package-lock.json 更改和 运行 npm ci

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

另一种选择: 接受通配符是错误的,并且您不相信那里发生的事情,因此将 @types/superagent 依赖项固定到之前的那个。

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

package.json

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

升级 @types/node^14.18.10typescript^3.9.10 对我有用。

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

发现于 this discussion from Github

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

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

一个技巧是使用 npm view 获取一些信息。

如果你输入

npm view @types/node

说明ts版本兼容。就我而言,必须将@types/node 升级到 14.14.31,因为我使用的是 ts 3.4.2.