XX服务器上的npm不知道咋突然坏了

收到同事的V,说是:182上的npm不知道咋突然坏了,查到这里了,不敢动了。

咱一定要抓重点:突然坏了。这里的突然肯定不是瞬间(大概率是上次可用,这次不可用,中间间隔了多长时间,不好说~_~)。

来吧,登录到服务器上,执行npm命令:

~]# npm 
node: relocation error: /lib64/libnode.so.93: symbol FIPS_selftest, version OPENSSL_1_1_0g not defined in file libcrypto.so.1.1 with link time reference

libcrypto.so.1.1不支持/lib64/libnode.so.93,但是呢后者依赖前者,这就是原因:

~]# ldd /lib64/libnode.so.93 | grep libcrypto    
        libcrypto.so.1.1 => /usr/local/openssl/lib/libcrypto.so.1.1 (0x00007f19e3eaf000)

显然是编译安装了一个openssl版本:

~]# ll /bin/openssl
lrwxrwxrwx 1 root root 30 Aug 12 09:45 /bin/openssl -> /usr/local/openssl/bin/openssl

~]# openssl version
OpenSSL 1.1.1p  21 Jun 2022

这台机器是CentOS7.9,缺省安装的是1.0.2k,这里应该是升级openssh的时候将openssl升级了。

~]# rpm -qa|grep openssl
openssl-1.0.2k-26.el7_9.x86_64
openssl11-libs-1.1.1k-6.el7.x86_64
openssl11-1.1.1k-6.el7.x86_64
openssl-libs-1.0.2k-26.el7_9.x86_64

查看RPM包可以看到,除了原生安装的1.0.2.k外,还安装了1.1.1k版本,这么一来/usr/local/openssl就没必要了。

1、如下将/usr/local/openssl/lib注释掉

~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
#/usr/local/openssl/lib

2、使用 ldconfig 命令更新动态链接库缓存:

~]# ldconfig

3、确认是否生效,引用到了/lib64/libcrypto.so.1.1

~]# ldd /lib64/libnode.so.93 | grep libcrypto
        libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007efee33dd000)

最后,执行npm -v命令,问题解决:

~]# npm -v
8.19.4

刚通知同事,问题解决了,Please enjoy!结果告诉我还是不能用~~我这一脸问号还没消失,截图就过来了,问题回显如下:

~]# npm ping http://192.168.1XX.XX:4873/
npm notice PING http://192.168.1XX.XX:4873/
npm ERR! code ERR_INVALID_URL
npm ERR! Invalid URL

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2024-11-22T07_26_02_329Z-debug-0.log

问题定位:

1、telnet 192.168.1XX.XX 4873,是通的

2、在另外一台服务器上装了一个npm命令,OK的

3、问问AI,百度搜搜,无果~~不过AI回答的一个可能原因提醒了我(无心插柳,踏破铁鞋):因为之前的HVV,设置了防火墙策略,不允许访问互联网,我就设置了web代理。

解决:

注释掉代理配置,然后重新登录即可。

### 解决 UniApp 命令行编译及运行调试时连接xx.bspapp.com 的问题 当在使用 UniApp 开发过程中遇到 `xx.bspapp.com` 连接失败的情况,通常是因为网络环境或依赖配置存在问题。以下是可能的原因分析以及解决方案: #### 1. **检查网络代理设置** 如果开发环境中设置了 HTTP/HTTPS 代理,则可能导致无法正常访问外部资源服务器(如 `xx.bspapp.com`)。可以通过以下方式禁用代理: ```bash npm config delete proxy npm config delete https-proxy ``` 这一步操作会清除 npm 配置中的全局代理设置[^1]。 #### 2. **确认 DNS 设置** 某些情况下,DNS 可能未能正确解析目标域名。建议更换为公共 DNS 服务提供商的地址,例如 Google 或阿里云的 DNS 地址: - 修改本地主机文件 `/etc/resolv.conf` (Linux/MacOS)或通过控制面板更改 Windows 系统的 DNS 设置。 - 推荐使用的 DNS 地址:8.8.8.8 (Google),223.5.5.5 (AliCloud)。 #### 3. **安装必要的构建工具** 由于部分插件(如 `node-sass` 和其依赖项 `node-gyp`)需要 C++ 编译器支持,在 Windows 平台上需额外安装 Microsoft Visual Studio Build Tools;而在 macOS/Linux 上则应确保已安装 GNU 工具链及相关库。具体步骤如下: - 对于 Windows 用户,请下载并安装最新版本的 [Visual Studio](https://visualstudio.microsoft.com/) ,勾选 “Desktop development with C++” 组件; - 在 Linux 发行版上可通过包管理器完成安装,比如 Ubuntu 下可执行命令: ```bash sudo apt-get update && sudo apt-get install build-essential libssl-dev ``` #### 4. **更新 Node.js 版本** 较低版本的 Node.js 可能兼容最新的 NPM 包及其子模块。推荐升级到 LTS(Long Term Support) 版本以获得更好的稳定性和支持度。可以从官方站点获取适合的操作系统二进制分发包,并按照说明重新初始化项目依赖关系: ```bash nvm install --lts nvm use --lts rm -rf node_modules package-lock.json npm install ``` #### 5. **强制重试远程请求** 有时因短暂性的网络波动造成链接中断现象,尝试增加超时时间参数或将缓存清理后再发起新的构建过程可能会有所帮助: ```bash npm cache clean --force npm run dev --verbose --timeout=60000 ``` 以上措施综合应用后应当能够有效缓解乃至彻底消除此类错误提示信息。 ```javascript // 示例代码片段展示如何调整NPM配置来适应特殊场景需求 const { execSync } = require('child_process'); execSync('npm set strict-ssl false', { stdio: 'inherit' }); console.log("SSL验证已被关闭"); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值