• "gyp ERR! build error"


    起因

    将本地运行完好的项目推送到服务器端进行自动打包部署,运行 “npm install“ 进行包安装,提示一大堆 “gyp ..." 的报错,记得之前 Windows 上报此错误是需要安装 c++ 相关的运行套件,而在 CentOS7 上则需要安装 gcc (一个驱动程序,根据代码的后缀名来判断调用c编译器还是c++编译器 (g++)),正常情况下 CentOS7 是自带 gcc 的,之所以运行报错,是因为 gcc 版本太低了,或者说我们的项目相关依赖需要的 gcc 版本太高了。

    解决方法一

    降低 node 版本,“npm install” 进行依赖安装时,node 会进行代相关码编译,其中过高的 node 版本对 gcc 的版本要求就更高,所以可以试下降低 node 的版本,实测中 node 版本从 15.x 降到 14.x 解决问题。

    解决方法二

    更新 gcc 的版本,依次执行如下命令:

    // 安装centos-release-scl
    sudo yum install centos-release-scl
    // 安装devtoolset,8.x 版本
    sudo yum install devtoolset-8-gcc*
    // 激活对应的 devtoolset
    scl enable devtoolset-8 bash
    // 查看当前 gcc 版本
    gcc -v
    

    至此,重新执行 “npm install” ,应该可以正常安装了。
    需要注意的是上面的操作只限当前会话,如若需要重启后继续使用,则需要执行以下配置:

    // 启用指定版本 devtoolset
    source /opt/rh/devtoolset-8/enable
    // 打开开机自启执行文件,将上一个命令添加到 rc.local 末尾
    vi /etc/rc.d/rc.local
    // 如果遇到权限问题,可执行以下进行赋权后再操作
    chmod +x /etc/rc.d/rc.local
    

    如果不想每次都 enable 来指定版本的话,可以尝试替换掉旧版本 gcc,具体如下:

    mv /usr/bin/gcc /usr/bin/gcc-4.8.5
    
    ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
    
    mv /usr/bin/g++ /usr/bin/g++-4.8.5
    
    ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
    
    gcc --version
    
    g++ --version
    

    参考

    作者:五更
    欢迎交流,转载请标明出处,谢谢。
  • 相关阅读:
    react 有多个按钮时点击单个按钮独立控制Loading
    React路由通信
    体育竞技模拟比赛
    json与csv格式相互转换
    替换表格内容及csv转html及CGI
    excel转换成csv格式
    文件读写笔记
    自定义手绘风
    numpy&matplotlib读书笔记
    Python成绩雷达图
  • 原文地址:https://www.cnblogs.com/teemwu/p/14680287.html
Copyright © 2020-2023  润新知