微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

npm 审计修复 --force 改变了什么,你如何修复它?

如何解决npm 审计修复 --force 改变了什么,你如何修复它?

我试图npm install apn --save并使用了npm audit fix --force。 “希望你知道你在做什么”的信息让我意识到我不知道我在做什么。在那之后,我原本是得到

node /home/ec2-user/myapp/bin/www: symbol lookup error: 
/home/ec2-user/myapp/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: undefined symbol: napi_add_finalizer

所以我将节点更新为 V14.16.0 但这没有帮助所以我决定删除 package-lock.jsonnode_modules 并在之后运行 npm install 。 现在会出现这个错误

PM2 error: Error: spawn node ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:269:19)
    at onErrorNT (internal/child_process.js:465:16)
    at processticksAndRejections (internal/process/task_queues.js:80:21)

然后我意识到 PM2 没有使用新的节点版本。我升级了 PM2,现在它显示我的应用是 online 反对 errored
但是如果我的节点服务器在尝试运行我的网站时正在运行(端口 8080),我仍然会收到 502 错误

[proxy_http:error] [pid 22860] (20014)Internal error 
(specific information not available): [client my IP address]
 AH01102: error reading status line from Remote Server 127.0.0.1:8080

如果我停止了节点服务器,则会出现 503 错误

[proxy:error] [pid 13022] (111)Connection refused:
 AH00957: HTTP: attempt to connect to 127.0.0.1:8080 (127.0.0.1) Failed

有没有其他人遇到过这种情况?任何和所有的帮助将不胜感激。我也相信 node-forgeapn 的依赖者,需要 npm audit fix -- force

解决方法

npm audit 是一个实用程序,它读取您的 package.json 并根据安全漏洞数据库检查其依赖项的版本。当发现某些内容时,它会为您提供漏洞的严重程度以及fix 的选项。

修复的作用是升级项目的不安全依赖项。 npm audit fix 仅修改根据 SEMVER 规则不应导致问题的依赖项。

--force 是一个危险的选项,因为它不管任何规则都会升级依赖项。例如,这可能导致依赖项从版本 1.2.0 转到版本 2.3.0。这意味着您在项目中使用的函数可能不再存在,或者具有有效破坏应用程序的不同行为。

解决此问题的一种方法是返回您的版本控制系统(git、cvs 等)并恢复之前的 package.jsonpackage-lock.json。然后你应该删除 node_module 和任何 npm 缓存并运行 npm install

有关 npm audit 的更多信息,请参见 here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。