We had the same problem after upgrading nest 7.5.x to 8.0.0. The dependency "supertest"
for "nestjs/testing"
has a dependency on "@types/supertest"
which wildcards "@types/superagent": "*"
, and that dependency has another wildcard dependency "@types/node": "*"
, but the types within @types/supertest actually require @types/node >=16.X.X.
So nestjs/testing -> supertest -> @types/supertest -> @types/superagent -> @types/node >= 16.X.X
is your problem and error.
The comments mentioned are accurate because these package managers wildcard their dependencies to get the latest version of dependencies. They should but do not add peerDependencies with dependencies requirements such as "@types/node": "">=12.0.0 <16.0.0"
. Instead they say anything, "@types/node": "*"
so the error is post package install, no npm warnings/errors. "It worked yesterday but not today" is your big red flag because when you ran npm install
, with these wildcard dependencies even though you did not know it installed the latest version. Since it installed everything wildcard today, but not yesterday, it worked yesterday.
In addition, but also important is that you are have pinned @types/node <16.0.0 thus your error in combination with the other package changes.
One option: revert your package-lock.json changes and run npm ci
Another option: set your package.json dependency for @types/node to -> "@types/node": "^16.0.0",
.
Another option: accept that wildcards are wrong and you don't trust what is going on there so pin the @types/superagent dependency to the one prior.
As for me and my family, we use nestjs with AWS lambda which runtime does not include nodejs 16, and not everyone on my team runs npm ci
we more typically run npm install
so the solution was
package.json
...
"devDependencies": {
...
"@types/node": "14.18.2",
"@types/superagent": "4.1.10",
"@types/supertest": "^2.0.11",
...
@types/node
or something like that – Untilnpm ci
? – Untilnpm ci
– Until