收藏
回答

云函数安装部署canvas后,运行报错canvas.node: invalid ELF heade?

云函数安装部署完canvas

安装没有发生问题,一切正常

但是调用云函数后,一直报错,错误代码如下:

实在不知道怎么办了,请各位大神指点!!!!感激不尽!

同时提供云函数的源码,源码其实不完整,主要是想运行看看,不知道是源码的问题,还是canvas包安装的问题?

// 云函数入口文件
const cloud = require('wx-server-sdk')
const { createCanvas, loadImage } = require('canvas')


cloud.init({
    env'cloud1-7g1pdoii23b288bf'
})


// 云函数入口函数
exports.main = async (event, context) => {
    console.log(event)
    
    //开始绘制--------------------------------------------------------------------
    
        const canvas = createCanvas(400400)
        const ctx = canvas.getContext('2d')
        // Canvas 画布的实际绘制宽高
        const renderWidth = 400
        const renderHeight = 400


        // 绘制前清空画布
        ctx.clearRect(00, renderWidth, renderHeight)
        // 绘制印章边框
        var width = renderWidth/2
        var height = renderHeight/2
        console.log('width:',width)
        console.log('height:',height)
        ctx.lineWidth=2
        ctx.strokeStyle="#f00"
        ctx.arc(width,height,78,0,Math.PI*2);
        ctx.stroke()


        //画五角星
        create5star(ctx,width,height,25,"#f00",0);


        // 绘制印章单位
        var company = event.seal
        console.log('company:',company)
        ctx.translate(width,height);// 平移到此位置,
        ctx.font = '20px NSimSun'
        ctx.fillStyle="#f00";  
        var count = company.length;// 字数   
        console.log('字数:',count)


        var angle = 4*Math.PI/(3*(count - 1));// 字间角度   
        var chars = company.split("");   
        var c;
        // ctx.transform(1,0,0,0,0,0)


        for (var i = 0; i < count; i++){
          c = chars[i];// 需要绘制的字符   
          if(i==0)
          ctx.rotate(5*Math.PI/6);
          else
          ctx.rotate(angle);
          ctx.save(); 
          ctx.translate(600);// 平移到此位置,此时字和x轴垂直   
          ctx.rotate(Math.PI/2);// 旋转90度,让字平行于x轴   
          ctx.fillText(c,-105);// 此点为字的中心点
          ctx.restore();             
        }
        console.log('绘制结束')


        //绘制五角星  
        function create5star(ctx,sx,sy,radius,color,rotato){
          ctx.save();  
          ctx.fillStyle=color;  
          ctx.translate(sx,sy);//移动坐标原点  
          ctx.rotate(Math.PI+rotato);//旋转  
          ctx.beginPath();//创建路径  
          var x = Math.sin(0);  
          var y= Math.cos(0);  
          var dig = Math.PI/5 *4;  
          for(var i = 0;i< 5;i++){//画五角星的五条边  
            var x = Math.sin(i*dig);  
            var y = Math.cos(i*dig);  
            ctx.lineTo(x*radius,y*radius);  
          }   
          ctx.closePath();  
          ctx.stroke();  
          ctx.fill();  
          ctx.restore();  
          }
        
    //绘制结束-------------------------------------------------






    return {
        
    }
}
回答关注问题邀请回答
收藏

1 个回答

  • ʚ🧸ɞ
    ʚ🧸ɞ
    2023-03-10

    大佬你的这个问题解决了吗? 我现在也遇到相同的问题

    2023-03-10
    有用
    回复
登录 后发表内容