I have a package.json
file with the following dev-dependencies:
"devDependencies": {
"@nx/js": "18.0.4",
"@nx/jest": "18.0.4",
"@nx/eslint-plugin": "18.0.4",
"typescript": "5.3.3",
"eslint": "8.56.0",
"jest": "^29.7.0",
"@types/jest": "^29.5.12",
"ts-jest": "29.1.2",
"nx": "latest"
}
When I run npm install
locally, it works without displaying any errors or warnings.
When I run the same command with the same package.json
file in our build environment (as a part of an Azure DevOps pipeline), it fails with the following error:
npm warn deprecated [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
Based on that thread on Github, it appears this is related to a transitive dependency somewhere in the intestines of Jest, and the issue has already been known for more than half a year. But then, the package.json
of another repo of ours references the same Jest version, and there, the build process does not exhibit any problems.
What could be the cause and how do I fix (or even just analyze) this?
First things first - this isn't an error, it's a warning. You can decide if you want to address it or can ignore it. It shouldn't break the build.
Regarding analyzing the issue - running npm ls --all
will give you a tree of all the dependencies and transitive dependencies your project has:
➜ myproj npm ls --all
[email protected] /Users/mureinik/src/untracked/myproj
├─┬ @nx/[email protected]
│ ├─┬ @nrwl/[email protected]
│ │ └── @nx/[email protected] deduped
│ ├─┬ @nx/[email protected]
│ │ ├─┬ @nrwl/[email protected]
│ │ │ └── @nx/[email protected] deduped
│ │ ├─┬ [email protected]
│ │ │ └─┬ [email protected]
│ │ │ ├── [email protected]
│ │ │ ├── [email protected] deduped
│ │ │ ├─┬ [email protected]
│ │ │ │ └─┬ [email protected]
│ │ │ │ └── [email protected] deduped
│ │ │ └─┬ [email protected]
│ │ │ └─┬ [email protected]
│ │ │ ├── [email protected] deduped
│ │ │ └── [email protected] deduped
│ │ ├── [email protected] deduped
│ │ ├── [email protected] deduped
│ │ ├── [email protected] deduped
│ │ ├── [email protected] deduped
│ │ ├── [email protected] deduped
│ │ ├── [email protected] deduped
│ │ └── [email protected] deduped
<snipped - output is VERY long
If you read through the output, you'll see that inflight
is transitively required through @nx/jest
.
Unfortuntely, even the latest @nx
dependencies (20.4.0 at the time of writing this post) suffer from the same problem, so unless you want to change your tech-stack, I fear you're out of luck.
Having said that, inflight
isn't explicitly broken - while leaking memory obviously isn't a great behavior, for a dev dependency, it might just be OK.
EDIT:
Followup - as noted in the comments, npm completes with an exit code of 0, indicating this is indeed not an error. If the warning in the output is a problem, you can suppress it by adding a --silent
flag to the command:
npm install --silent
Remark by OP:
The concrete issue for the OP was that the failOnStderr
option was set to true
in the Azure DevOps pipeline that ran the PowerShell script. Therefore, the warning (which was printed to stderr
) caused the build to fail.