模块“"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.10
和 typescript 到 ^3.9.10
对我有用。
"devDependencies": {
"@types/node": "^14.18.10",
"typescript": "^3.9.10"
},
如果你已经安装了 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.
有没有人遇到过这种情况?
我 运行 我的代码 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.10
和 typescript 到 ^3.9.10
对我有用。
"devDependencies": {
"@types/node": "^14.18.10",
"typescript": "^3.9.10"
},
如果你已经安装了 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.