npmauditfix --force 改变了什么以及如何修复它?

Bri*_*Miz 20 apn node.js npm node-forge

我正在尝试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
Run Code Online (Sandbox Code Playgroud)

所以我将节点更新为V14.16.0但这没有帮助所以我决定删除package-lock.json并node_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)
Run Code Online (Sandbox Code Playgroud)

我意识到 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
Run Code Online (Sandbox Code Playgroud)

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

[proxy:error] [pid 13022] (111)Connection refused:
 AH00957: HTTP: attempt to connect to 127.0.0.1:8080 (127.0.0.1) failed
Run Code Online (Sandbox Code Playgroud)

还有其他人经历过吗?任何和所有的帮助将不胜感激。我还相信node-forge是一个依赖者apn并且需要npm audit fix -- force

Dra*_*rd2 38

npm audit是一个实用程序,可以读取您的信息package.json并根据安全漏洞数据库检查其依赖项的版本。当发现某些东西时,它会告诉您漏洞的严重性以及解决fix该漏洞的选项。

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

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

解决此问题的一个选择是返回版本控制系统(git、cvs 等)并恢复以前的package.json和package-lock.json. 然后你应该删除node_module所有 npm 缓存并运行npm install。

更多信息可以在这里npm audit找到。

  • 感谢您的快速回复和大量信息。我明白为什么拥有版本控制系统很重要,不幸的是我只是主要备份应用程序、路由和视图文件。听起来每个人都会遇到不同的问题,抱歉我在那里没有太多帮助。通过 --force 修复,它会升级每个依赖项还是仅升级审计建议的依赖项? (3认同)