[node.js] package.json에 나열되지 않은 package-lock.json의 취약한 npm 패키지를 어떻게 수정합니까?

Github는 내 package-lock.json 파일의 종속성이 취약하고 구식이라고 말합니다. 문제는 내가 npm install또는을 수행 npm update하면 둘 다 package-lock.json 파일의 종속성을 업데이트하지 않는다는 것입니다.

나는 이것에 대해 많은 인터넷 검색을 수행했으며 파일을 삭제하고 npm install.

누구든지이 문제를 해결할 수 있다면 대단히 감사하겠습니다. 문제의 패키지는 실제로 내 package.json 파일에없는 Hoek입니다.

미리 감사드립니다.



답변

Hoek이 종속성 중 하나의 종속성 인 것처럼 들립니다 (따라서 package.json에있는 패키지는 자체 package.json에서이를 필요로합니다).

이미 성공적으로 프로젝트 종속성을 삭제 / 재설치 및 업데이트하려고 시도 했으므로 해당 패키지 종속성에 명시 적 또는 최대 버전이 지정된 것 같습니다.

각 종속성에 대한 package.json을 보지 않으면 업데이트를 강제하는 방법에 대해 추가로 조언하기가 어려울 것입니다.

편집 :
어떤 패키지가 어떤 종속성을 사용하는지 식별하는 데 도움이되도록 NPM의 ls명령을 사용할 수 있습니다 . https://docs.npmjs.com/cli/ls

예를 들어 Hoek을 사용하는 패키지를 확인하려면 다음을 수행하십시오.
npm ls hoek

편집 2 :
Ulysse BN이 올바르게 지적했듯이 NPM 버전 6 이상이있는 경우을 사용 npm audit fix하여 NPM에 취약성을 수정하도록 요청할 수 있습니다.

편집 3 :
이것을 읽는 사람들은 아래 JBallin의 답변을 확인해야합니다. 여기에 제공된 정보를 확장하고 OP의 질문을 더 잘 해결하는 더 구조화 된 답변입니다. 그러나 빠른 수정을 원하면이 답변으로 충분합니다.


답변

TLDR : npm i $PARENT_PKG_NAME.


노트

종속성을 업데이트 할 때 CHANGELOG에서 주요 변경 사항을 검토해야합니다.

진단

npm audit취약한 패키지 (이를 위해서는 package-lock.json 파일이 필요하므로를 실행해야 함 npm i)와 종속 된 패키지 (해당되는 경우)를 모두 공개합니다. 를 사용 npm ls $CHILD_PKG_NAME하여 상위 종속성을 볼 수도 있습니다 .

빠른 수정 시도

npm audit fixnpm audit fix --force가치의 시도가 있지만, 때로는 수정 (아래 참조) 수동으로 수행해야합니다.

수동 수정

대부분의 경우 상위 패키지가 이미 종속성을 수정했을 것이므로 (GitHub로 이동하여 최근 커밋을 검토하여 확인할 수 있습니다. 또는 이것이 수정되었는지 확인하면됩니다) 실행하면 npm i $PARENT_PKG_NAME @$NEW_VERSION패키지 잠금이 업데이트됩니다. .json.

부모가 취약점을 수정하지 않은 경우

관리자가 응답하지 않는 것 같으면 동일한 작업을 수행하는 대체 패키지를 사용하거나 패키지를 포크하고 취약점을 직접 업데이트하는 것을 고려할 수 있습니다.

수정 확인

이제 실행 npm audit하고 취약점이 나타나지 않는지 확인하여 작동하는지 확인할 수 있습니다 . 변경 사항을 커밋하고 GitHub에 푸시하고 알림 / 경고를 새로 고치면 사라집니다!


답변

npm @ 6 이상이있는 경우 npm audit fix보안 문제에 사용할 수 있습니다 .


답변

사용하다:

npm i hoek

npm은 최신 버전의 hoek을 설치하고 package.lock.json이 업데이트됩니다.


답변

나는이 문제가 있었고 npm을 실행하고 있던 서버에 it-package-lock.json에서 이전 버전의 npm이 있었기 때문에 새로운 버전에서만 지원된다는 것을 알았습니다.


답변

시도해 보셨습니까? 프로젝트 루트로 이동하여 package-lock.json파일 node_modules.cache폴더를 삭제 한 다음 npm install.


답변

취약한 npm 패키지를 확인하려면 다음 명령을 사용하십시오.

npm audit

취약한 npm 패키지를 수정하려면 package-lock.json도 수정하는 다음 명령을 사용하십시오.

npm audit fix