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

31

有人遇到过这种情况吗? 我在使用CI/CD运行我的代码时, 在nest build之后,它会出现错误: node_modules/@types/superagent/index.d.ts:23:10 - error TS2305: Module '"buffer"' has no exported member 'Blob'. 23 import { Blob } from "buffer";

我不知道为什么?如果你找到了解决方案,请分享一下。


看起来这似乎与你的@types/node版本或类似的东西有关。 - Micael Levi
1
很奇怪,因为昨天对我来说一切还都好好的 :( 。我仍然使用相同的节点版本。 - ninoorta
你有给锁文件打版本并运行 npm ci 吗? - Micael Levi
我现在会尝试一下。但是当我在本地运行时,它还是正常的吗?只有当我将其推送到GitLab并运行CI/CD时,它才会给我这个错误。你以前遇到过这样的情况吗? - ninoorta
1
我没有遇到过这种情况。到目前为止,我一直在TS项目中使用GitHub Actions而没有任何问题。也许你的CI/CD版本与本地版本不同,这是由于缺少锁定文件和npm ci引起的。 - Micael Levi
显示剩余2条评论
6个回答

51
升级nest 7.5.x到8.0.0后,我们遇到了相同的问题。依赖项“nestjs/testing”中的“supertest”对“@types/supertest”有一个依赖关系,该依赖关系使用通配符“@types/superagent”:“*”,而该依赖关系又具有另一个通配符依赖关系“@types/node”:“*”,但是@types/supertest中的类型实际上需要@types/node> = 16.X.X。 因此,您的问题和错误是“nestjs/testing-> supertest-> @types/supertest-> @types/superagent-> @types/node> = 16.X.X”。 这些评论提到的是准确的,因为这些软件包管理器通配符依赖项以获取依赖项的最新版本。他们应该但没有添加与依赖项要求相关的peerDependencies,例如“@types/node”:“”> = 12.0.0 <16.0.0“。相反,他们说任何内容,“@types/node”:“*”,因此错误是在包安装后发布的,没有npm警告/错误。 “昨天可以工作,今天不行”是您的严重警告标志,因为当您运行npm install时,即使您不知道它已安装最新版本,这些通配符依赖性也会安装。由于今天它安装了所有通配符,但昨天不是,所以昨天它可以工作。 此外,但也很重要的是,您已经固定了@types/node <16.0.0,因此出现了错误与其他软件包更改的组合。 一种选择:还原package-lock.json更改并运行npm ci 另一种选择:将package.json依赖项设置为->“@types/node”:“^16.0.0”,。 另一个选项:接受通配符是错误的,您不信任那里正在发生的事情,因此将@types/superagent依赖性固定在之前的版本上。 至于我和我的家人,我们使用带有AWS Lambda的nestjs,其中运行时不包括nodejs 16,并且我的团队中并非每个人都运行npm ci,我们更经常运行npm install,因此解决方案是 package.json
    ...
    "devDependencies": {
        ...
        "@types/node": "14.18.2",
        "@types/superagent": "4.1.10",
        "@types/supertest": "^2.0.11",
        ...


谢谢你的解决方案。我会尝试并尽快让你知道结果。 - ninoorta
谢谢。对我来说,你的第一个选项可行。 - ninoorta
1
对我来说,问题是我的运行节点版本和@types/node不匹配。因此,在更新类型以匹配节点主要版本后,它可以正常工作。 - Code Spirit
谢谢你,有一颗大心脏的人 <3 - Coke
14.8.2 似乎不存在。Hugo 的答案对我有用。 - Samantha
显示剩余2条评论

12

@types/node 升级至 ^14.18.10,并将 typescript 升级至 ^3.9.10,对我有用。

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

Github上的这个讨论中发现


3

将 @types/superagent 从 v15.x.x 降级到 14.1.14 对我解决了问题。在编写此消息时,v15 存在一些性能问题。 "npm i --save @types/superagent@4.1.14" 就解决了问题。


2

一个小建议是使用 npm view 命令获取一些信息。

如果您输入以下命令:

npm view @types/node

这显示了ts版本的兼容性。在我的情况下,我不得不升级@types/node到14.14.31,因为我正在使用ts 3.4.2。


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

0
我遇到了类似的问题,我将 @types/node 的版本从 '13.7.0' 更新到了 '^14.0.0',然后问题就解决了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接