npm install报错SocksProxyAgent is not a constructor问题咨询
npm install 报错 SocksProxyAgent is not a constructor 解决方法
错误日志
50 warn skipping integrity check for git dependency https://git@github.com/jitsi/strophejs-plugin-stream-management.git 51 warn skipping integrity check for git dependency https://git@github.com/jitsi/rnnoise-wasm.git 52 warn skipping integrity check for git dependency https://git@github.com/jitsi/react-native-video.git 53 warn skipping integrity check for git dependency https://git@github.com/software-mansion/react-native-reanimated.git 54 warn skipping integrity check for git dependency https://git@github.com/jitsi/sdp-interop.git 55 silly audit bulk request failed undefined 56 verbose audit error TypeError: SocksProxyAgent is not a constructor 56 verbose audit error at getProxy (/Users/xb2022/.nvm/versions/node/v16.15.1/lib/node_modules/npm/node_modules/make-fetch-happen/lib/agent.js:201:12) 56 verbose audit error at getAgent (/Users/xb2022/.nvm/versions/node/v16.15.1/lib/node_modules/npm/node_modules/make-fetch-happen/lib/agent.js:67:19) 56 verbose audit error at remoteFetch (/Users/xb2022/.nvm/versions/node/v16.15.1/lib/node_modules/npm/node_modules/make-fetch-happen/lib/remote.js:31:17) 56 verbose audit error at fetch (/Users/xb2022/.nvm/versions/node/v16.15.1/lib/node_modules/npm/node_modules/make-fetch-happen/lib/fetch.js:99:13) 56 verbose audit error at makeFetchHappen (/Users/xb2022/.nvm/versions/node/v16.15.1/lib/node_modules/npm/node_modules/make-fetch-happen/lib/index.js:10:10) 56 verbose audit error at doFetch (/Users/xb2022/.nvm/versions/node/v16.15.1/lib/node_modules/npm/node_modules/npm-registry-fetch/lib/index.js:108:15) 56 verbose audit error at async Map.[getReport] (/Users/xb2022/.nvm/versions/node/v16.15.1/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/audit-report.js:333:21) 56 verbose audit error at async Map.run (/Users/xb2022/.nvm/versions/node/v16.15.1/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/audit-report.js:106:19) 57 silly audit error undefined 58 timing auditReport:getReport Completed in 610ms 59 silly audit report null
问题原因
从错误栈可以定位到,报错出在npm内置的make-fetch-happen网络模块初始化SOCKS代理实例的环节,触发时机是npm拉取依赖安全审计报告时。常见诱因有三个:
- npm本地缓存损坏,导致内置的
socks-proxy-agent依赖文件缺失、引用异常 - 本地配置了SOCKS代理但地址格式错误,不符合当前npm版本的解析规则
- 全局安装的npm目录下依赖文件损坏,多发生在手动修改全局npm依赖、切换Node版本后残留文件冲突的场景
解决步骤
按优先级从高到低依次尝试即可:
- 先清理npm缓存,执行命令
npm cache clean --force,清除损坏的缓存文件后重试安装 - 检查代理配置:执行
npm config list查看是否配置了proxy、https-proxy、socks-proxy项,先执行以下命令清空所有代理配置后重试:
如果清空代理后安装正常,说明之前的代理配置有误。需要保留代理的话,配置SOCKS代理时必须带完整协议头,正确格式示例:npm config delete proxy npm config delete https-proxy npm config delete socks-proxynpm config set socks-proxy socks5://127.0.0.1:1080,不能省略socks5://直接写IP和端口。 - 临时绕过方案:如果不需要做依赖安全审计,执行安装时加
--no-audit参数跳过审计环节,命令为npm install --no-audit,可以直接绕开触发报错的审计请求流程,优先把依赖安装完成。 - 以上操作都无效的话,直接重装Node.js即可。当前报错环境用的是nvm管理的v16.15.1版本,执行
nvm uninstall 16.15.1后重新执行nvm install 16.15.1就能修复全局npm目录下损坏的依赖文件,不要手动修改npm全局目录下的代码,很容易引发其他依赖引用问题。
内容的提问来源于stack exchange,提问作者seeko
相关产品推荐
相关产品推荐

