问题描述
我试图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.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)
然后我意识到 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-forge
是 apn
的依赖者,需要 npm audit fix -- force
解决方法
npm audit
是一个实用程序,它读取您的 package.json
并根据安全漏洞数据库检查其依赖项的版本。当发现某些内容时,它会为您提供漏洞的严重程度以及fix
的选项。
修复的作用是升级项目的不安全依赖项。 npm audit fix
仅修改根据 SEMVER 规则不应导致问题的依赖项。
--force
是一个危险的选项,因为它不管任何规则都会升级依赖项。例如,这可能导致依赖项从版本 1.2.0
转到版本 2.3.0
。这意味着您在项目中使用的函数可能不再存在,或者具有有效破坏应用程序的不同行为。
解决此问题的一种方法是返回您的版本控制系统(git、cvs 等)并恢复之前的 package.json
和 package-lock.json
。然后你应该删除 node_module
和任何 npm 缓存并运行 npm install
。
有关 npm audit
的更多信息,请参见 here。