zoukankan      html  css  js  c++  java
  • "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
    

    参考

    作者:五更
    欢迎交流,转载请标明出处,谢谢。
  • 相关阅读:
    Android访问数据库(SQL Server 和 MySQL)
    Andriod开发环境搭建
    SQL 学习记录
    安装双系统 win7 + ubuntu 15.04
    SQL资料
    电脑使用
    python_L7
    ONE
    网页性能优化
    js的继承
  • 原文地址:https://www.cnblogs.com/teemwu/p/14680287.html
Copyright © 2011-2022 走看看