You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux Mint安装scratch-www遇node-pre-gyp错误的解决求助

解决scratch-www(c01438b版本)npm install时的canvas编译错误

问题根源

canvas@2.9.0发布时未适配Node.js 20.x版本,官方无对应预编译二进制包;源码编译时,Node.js 20的v8引擎API(如v8::AccessorSignature)已发生变更,导致旧版本canvas的编译代码无法兼容。

解决方案

方案1:降级Node.js到兼容版本(推荐)

canvas@2.9.0对Node.js 18.x版本有完整支持,操作步骤如下:

  1. 安装nvm(Node版本管理器):
    git clone https://github.com/nvm-sh/nvm.git ~/.nvm
    cd ~/.nvm && git checkout v0.39.7
    source ~/.nvm/nvm.sh
    echo "source ~/.nvm/nvm.sh" >> ~/.bashrc
    
  2. 重启终端后,切换到Node.js 18:
    nvm install 18
    nvm use 18
    
  3. 重新执行scratch-www的安装命令:
    npm install
    

方案2:安装系统编译依赖并手动patch代码(复杂,不推荐)

若坚持使用Node.js 20,需先安装编译canvas所需的系统依赖,再修改canvas代码适配v8 API:

  1. 安装系统依赖:
    sudo apt-get update && sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
    
  2. 执行npm install触发源码编译,失败后进入node_modules/canvas/src目录
  3. 找到包含v8::AccessorSignature的文件(如Canvas.cc),修改相关代码:
    • 将static v8::AccessorSignature* canvas_accessor_signature = nullptr;替换为static v8::Local<v8::FunctionTemplate> canvas_function_template;
    • 将后续使用canvas_accessor_signature的地方替换为canvas_function_template->Signature()
  4. 重新编译canvas:
    npm rebuild canvas@2.9.0
    

注意事项

scratch-www的c01438b版本依赖的canvas版本较陈旧,长期建议升级scratch-www至更新版本,以原生支持Node.js 20。

内容的提问来源于stack exchange,提问作者Sigge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:54:49