为什么我不能更新 npm 包依赖?
Why I can't update npm package dependancy?
我完成了 npm 审计,它告诉我我有一个高漏洞。这是它给我的信息:
┌───────────────┬─────────────────────────────────────────────────┐
│ High │ Arbitrary File Overwrite │
├───────────────┼─────────────────────────────────────────────────┤
│ Package │ tar │
├───────────────┼─────────────────────────────────────────────────┤
│ Patched in │ >=4.4.2 │
├───────────────┼─────────────────────────────────────────────────┤
│ Dependency of │ node-sass-chokidar │
├───────────────┼─────────────────────────────────────────────────┤
│ Path │ node-sass-chokidar > node-sass > node-gyp > tar │
├───────────────┼─────────────────────────────────────────────────┤
│ More info │ https://npmjs.com/advisories/803 |
└───────────────┴─────────────────────────────────────────────────┘
我查看了我的 package-lock.json for node-gyp package,我发现 tar package 仍然有 2.0.0 版本,但是我需要 4.4.8:
"node-gyp": {
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
"integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
"requires": {
"fstream": "^1.0.0",
"glob": "^7.0.3",
"graceful-fs": "^4.1.2",
"mkdirp": "^0.5.0",
"nopt": "2 || 3",
"npmlog": "0 || 1 || 2 || 3 || 4",
"osenv": "0",
"request": "^2.87.0",
"rimraf": "2",
"semver": "~5.3.0",
"tar": "^2.0.0",
"which": "1"
},
"dependencies": {
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"requires": {
"abbrev": "1"
}
},
"semver": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
},
"tar": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
"inherits": "2"
}
}
}
}
然后我搜索了同样的问题,所以我找到了这个 answer。然后我做了
npm cache verify
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g
ncu -u
npm i
但 tar 软件包的版本仍然保持不变。我也尝试用 npm install tar@4.4.8
直接更新它,但它只是把 tar 放在我的 package.json 中。我还尝试了 npm update 和 npm outdated。一切看起来都是最新的。
嗯,它被称为 package-lock.json 是有原因的,该版本将始终保持不变。
如果您想更新您的软件包,您需要删除该文件,或将其重命名为 package.json,然后执行您的更新。
node-gyp@3.8.0
依赖于 "tar@^2.0.0
,更新 tar
到 4.4.8 不会影响 node-gyp
.
如 中所述,漏洞报告应该通过健全性检查并持保留态度。如果嵌套包有漏洞,所有依赖它的包都应该更新,这可能很复杂。另一方面,如果以不会导致安全问题的方式使用易受攻击的包,则它不是漏洞。
node-sass-chokidar
是开发包,tar
嵌套依赖不会给项目带来安全问题。报告的 'vulnerability' 无法轻易修复。忽略报告。如果还没有问题(实际上,there is),请在 node-sass
和 node-sass-chokidar
存储库中打开它。
我完成了 npm 审计,它告诉我我有一个高漏洞。这是它给我的信息:
┌───────────────┬─────────────────────────────────────────────────┐
│ High │ Arbitrary File Overwrite │
├───────────────┼─────────────────────────────────────────────────┤
│ Package │ tar │
├───────────────┼─────────────────────────────────────────────────┤
│ Patched in │ >=4.4.2 │
├───────────────┼─────────────────────────────────────────────────┤
│ Dependency of │ node-sass-chokidar │
├───────────────┼─────────────────────────────────────────────────┤
│ Path │ node-sass-chokidar > node-sass > node-gyp > tar │
├───────────────┼─────────────────────────────────────────────────┤
│ More info │ https://npmjs.com/advisories/803 |
└───────────────┴─────────────────────────────────────────────────┘
我查看了我的 package-lock.json for node-gyp package,我发现 tar package 仍然有 2.0.0 版本,但是我需要 4.4.8:
"node-gyp": {
"version": "3.8.0",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
"integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
"requires": {
"fstream": "^1.0.0",
"glob": "^7.0.3",
"graceful-fs": "^4.1.2",
"mkdirp": "^0.5.0",
"nopt": "2 || 3",
"npmlog": "0 || 1 || 2 || 3 || 4",
"osenv": "0",
"request": "^2.87.0",
"rimraf": "2",
"semver": "~5.3.0",
"tar": "^2.0.0",
"which": "1"
},
"dependencies": {
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"requires": {
"abbrev": "1"
}
},
"semver": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
},
"tar": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
"requires": {
"block-stream": "*",
"fstream": "^1.0.2",
"inherits": "2"
}
}
}
}
然后我搜索了同样的问题,所以我找到了这个 answer。然后我做了
npm cache verify
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g
ncu -u
npm i
但 tar 软件包的版本仍然保持不变。我也尝试用 npm install tar@4.4.8
直接更新它,但它只是把 tar 放在我的 package.json 中。我还尝试了 npm update 和 npm outdated。一切看起来都是最新的。
嗯,它被称为 package-lock.json 是有原因的,该版本将始终保持不变。
如果您想更新您的软件包,您需要删除该文件,或将其重命名为 package.json,然后执行您的更新。
node-gyp@3.8.0
依赖于 "tar@^2.0.0
,更新 tar
到 4.4.8 不会影响 node-gyp
.
如
node-sass-chokidar
是开发包,tar
嵌套依赖不会给项目带来安全问题。报告的 'vulnerability' 无法轻易修复。忽略报告。如果还没有问题(实际上,there is),请在 node-sass
和 node-sass-chokidar
存储库中打开它。