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

nin*_*rta 31 buffer nestjs cicd

以前有人遇到过这种情况吗?我在嵌套构建后使用 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";

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

vfr*_*k66 51

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

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/node <16.0.0,因此您的错误与其他包更改相结合。

一种选择:恢复 package-lock.json 更改并运行npm ci

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

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

对于我和我的家人来说,我们将 Nestjs 与 AWS lambda 一起使用,其运行时不包括 NodeJS 16,并且并不是我团队中的每个人都运行npm ci我们通常运行的npm install所以解决方案是

包.json

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

Run Code Online (Sandbox Code Playgroud)


Hug*_*ohm 12

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

"devDependencies": {
  "@types/node": "^14.18.10",
  "typescript": "^3.9.10"
},
Run Code Online (Sandbox Code Playgroud)

在Github 的讨论中找到