node版本冲突

概述

今天更新better-sqlit3的时候,总是编译失败,从github上找到了issue.
https://github.com/JoshuaWise/better-sqlite3/issues/310

感觉这个BUG是由于node-gyp没有适配python3所引起的

解决办法

临时的解决办法有两个:

办法一 降级node和node-gyp

使用<12.13.0的版本的node 以及5.0.0版本的node-gyp.
具体原因看来还是要等官方修复,目前node的LTS版本是12.13.0,在gentoo上只能通过mask这个版本,进行降级.

cat /etc/portage/package.mask/app
=net-libs/nodejs-12.13.0

npm uninstall node-gyp -g
npm i node-gyp@5.0.0 -g

办法二 设置PYTHON环境变量

在需要使用node-gyp的软件包的时候,设置PYTHON环境变量为python2的版本

# PYTHON=</path/of/python2> npm i xxxx
PYTHON=/usr/bin/python2 npm i better-sqlite3

不建议全局修改PYTHON环境变量指向python2,避免造成不必要的麻烦