安装Laravel CoreUi Admin模板时node-gyp@3.8.0构建失败如何解决
问题根因
本次报错是node-sass依赖的node-gyp@3.8.0仅兼容Python2.7,内置脚本使用了Python2特有的无括号print语法,运行在Python3环境下触发语法错误。
1. sys.version_info 正确语法
Python2和Python3通用的sys.version_info调用写法如下:
import sys # 索引写法,兼容所有Python版本 python_major_version = sys.version_info[0] python_minor_version = sys.version_info[1] # 属性写法,Python 2.7及以上版本支持,可读性更高 python_major_version = sys.version_info.major python_minor_version = sys.version_info.minor
旧版
node-gyp@3.8.0中的错误写法为print sys.version_info,Python3环境下必须改为带括号的print(sys.version_info)才能正常运行。
2. 切换最新版node-gyp完成构建的方案
方案1:强制npm使用全局最新版node-gyp
- 全局安装最新版node-gyp
npm install -g node-gyp@latest
- 配置npm调用全局版本的node-gyp
npm config set node_gyp "$(npm prefix -g)/lib/node_modules/node-gyp/bin/node-gyp.js"
- 清理缓存后重新安装依赖
npm cache clean --force rm -rf node_modules package-lock.json npm install
方案2:替换node-sass为sass(推荐长期使用)
node-sass已经官方停止维护,纯JS实现的sass包完全兼容其语法,不需要编译原生模块,也不会依赖旧版node-gyp,操作步骤:
npm uninstall node-sass npm install sass --save-dev
替换后不需要修改现有业务代码,还能避免后续Node版本升级带来的编译兼容问题。
方案3:临时指定Python2.7路径(仅应急使用)
如果暂时不想调整依赖,可以在本地安装Python2.7后,给npm指定对应Python路径:
npm config set python /你的Python2.7安装路径/python
配置完成后重新执行npm install即可。
内容的提问来源于stack exchange,提问作者B L Praveen
相关产品推荐
相关产品推荐

