我想使用canvas但是出现错误

问题描述 投票:0回答:2

代码:

const { createCanvas, loadImage } = require('canvas')
const canvas = createCanvas(200, 200)
const ctx = canvas.getContext('2d')

// Write "Awesome!"
ctx.font = '30px Impact'
ctx.rotate(0.1)
ctx.fillText('Awesome!', 50, 100)

// Draw line under text
var text = ctx.measureText('Awesome!')
ctx.strokeStyle = 'rgba(0,0,0,0.5)'
ctx.beginPath()
ctx.lineTo(50, 102)
ctx.lineTo(50 + text.width, 102)
ctx.stroke()

// Draw cat with lime helmet
loadImage('./img.jpg').then((image) => {
  ctx.drawImage(image, 50, 0, 70, 70)

  console.log('<img src="' + canvas.toDataURL() + '" />')
});

或者我尝试导入画布它仍然返回错误

const Canvas = require('canvas');
node:internal/modules/cjs/loader:1183
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: libuuid.so.1: cannot open shared object file: No such file or directory
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1183:18)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/home/runner/FoxBot/node_modules/canvas/lib/bindings.js:3:18)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32) {
  code: 'ERR_DLOPEN_FAILED'
}

我只是安装并尝试了 canvas 包的示例代码(在 npmjs.com 中),但是当我运行代码时,出现错误。
我问我的朋友,他说djs v13中的canvas有一些错误,但我在youtube上看到有人可以在djs v13中使用canvas而没有错误。

为什么以及如何解决?

node.js canvas discord.js node-canvas replit
2个回答
1
投票

我找到了解决这个问题的方法。 (使用 Replit)
第1步:点击三点按钮,点击

Show hidden files

第 2 步:转到名为
replit.nix

的文件 步骤3:在
pkgs.libuuid
中添加
deps
第四步:在 deps 下添加
env = { LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [pkgs.libuuid]; };

现在你可以在replit中使用node-canvas了!

示例

replit.nix
文件

{ pkgs }: {
    deps = [
        pkgs.libuuid
        pkgs.nodejs-16_x
        pkgs.nodePackages.typescript-language-server
        pkgs.nodePackages.yarn
        pkgs.replitPackages.jest
    ];
    env = { LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [pkgs.libuuid]; };
}

0
投票

即使我更改了replite.nix代码,我也有同样的错误,我认为它不起作用

© www.soinside.com 2019 - 2024. All rights reserved.