问题
Github is telling me that a dependency in my package-lock.json file is vulnerable and outdated. The problem is that if I do npm install
or npm update
, neither of them update the dependency in the package-lock.json file.
I've done a lot of googling on this, as well as deleted the file and done npm install
.
If anyone can help resolve this I'd hugely appreciate it. The package in question is Hoek, which I don't actually have in my package.json file.
Many thanks in advance.
回答1:
It sounds like Hoek is a dependency of one of your dependencies (so, a package you have in your package.json is requiring it from it's own package.json).
You've already tried deleting/reinstalling and updating your project dependencies without success, so it seems that the package dependency in question has an explicit or max version specified.
Without seeing the package.json for each of your dependencies, it would be difficult to advise further on how to force an update.
Edit:
To help you identify which packages are using which dependencies, you can use NPM's ls
command: https://docs.npmjs.com/cli/ls
For example, to see which packages are using Hoek:
npm ls hoek
Edit 2:
As Ulysse BN correctly points out, if you have NPM version 6 or later, you can use npm audit fix
to ask NPM to attempt to fix the vulnerabilities for you.
Edit 3: Those reading this should also check out JBallin's answer below. It expands on information I have given here, and is (in my opinion) a more structured answer that addresses OP's question better. However - if you want a quick fix - this answer should suffice.
回答2:
TLDR: Update the parent package using npm i $PARENT_PKG_NAME
.
Diagnosis
npm audit
will reveal both the vulnerable package (note that you'll need a package-lock.json file for this, so you'll need to run npm i
), as well as the package that it is a dependency of (if applicable). Note that you can also use npm ls $CHILD_PKG_NAME
to see its parent dependencies.
Quick Fix Attempt
npm audit fix
and npm audit fix --force
are worth a try, but sometimes the fix will need to be done manually (see below).
Manual Fix
Most likely the parent package will have already fixed their dependencies (you can verify this by going to their GitHub and reviewing the recent commits--or just seeing if this fixes it), so you can just run npm i $PARENT_PKG_NAME
and it will update your package-lock.json.
Verify Fix
You can now verify that it worked by running npm audit
and ensuring that no vulnerabilities are showing up. Commit your changes, push them to GitHub, refresh your notifications/alerts and they should be gone!
回答3:
If you have npm@6 or later, you can use npm audit fix for your security issues.
回答4:
Use:
npm i hoek
npm will install the latest version of hoek and your package.lock.json become updated.
回答5:
I had this issue and found that it was because the server on which I was running npm had an old version of npm on it- package-lock.json is only supported by newer versions.
回答6:
did you try this: go to your project root, delete the package-lock.json
file, node_modules
and .cache
folders, and then npm install
.
回答7:
After installing new dependencies run the following command to update the package-lock.json file:
npm update package-lock.json
来源:https://stackoverflow.com/questions/50328324/how-do-i-fix-a-vulnerable-npm-package-in-my-package-lock-json-that-isnt-listed