我试图在我的 ubuntu 18.04.5 vm 上安装 nodejs canvas。我正在使用使用 snap 包管理器安装的 nodejs v14.16.0。
按照 node-canvas 的 GitHub wiki 上的说明进行操作: https ://github.com/Automattic/node-canvas/wiki/Installation:-Ubuntu-and-other-Debian-based-systems
- 我为 Ubuntu 和其他基于 Debian 的系统安装了所有依赖项:
$ sudo apt-get update
$ sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
(没有错误)
- 我使用 npm 安装了节点画布:
$ npm install canvas
运行此命令后,我在控制台中收到以下警告和错误:
npm WARN deprecated node-pre-gyp@0.15.0: Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future
npm WARN lifecycle The node binary used for scripts is /snap/bin/node but npm is using /snap/node/3787/bin/node itself. Use the `--scripts-prepend-node-path` option to include the path for the node binary npm was executed with.
> canvas@2.7.0 install /home/max/Desktop/test/node_modules/canvas
> node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using needle for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://github.com/Automattic/node-canvas/releases/download/v2.7.0/canvas-v2.7.0-node-v83-linux-glibc-ia32.tar.gz
node-pre-gyp WARN Pre-built binaries not found for canvas@2.7.0 and node@14.16.0 (node-v83 ABI, glibc) (falling back to source compile with node-gyp)
make: Entering directory '/home/max/Desktop/test/node_modules/canvas/build'
SOLINK_MODULE(target) Release/obj.target/canvas-postbuild.node
COPY Release/canvas-postbuild.node
CXX(target) Release/obj.target/canvas/src/backend/Backend.o
CXX(target) Release/obj.target/canvas/src/backend/ImageBackend.o
CXX(target) Release/obj.target/canvas/src/backend/PdfBackend.o
CXX(target) Release/obj.target/canvas/src/backend/SvgBackend.o
CXX(target) Release/obj.target/canvas/src/bmp/BMPParser.o
../src/bmp/BMPParser.cc: In member function ‘void BMPParser::Parser::parse(uint8_t*, int, uint8_t*)’:
../src/bmp/BMPParser.cc:186:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
E(ptr - data > imgdOffset, "image data overlaps with another structure");
~~~~~~~~~~~^~~
../src/bmp/BMPParser.cc:10:25: note: in definition of macro ‘E’
#define E(cond, msg) if(cond) return setErr(msg)
^~~~
../src/bmp/BMPParser.cc:201:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
E(ptr - data + imgdSize > len, "not enough image data");
~~~~~~~~~~~~~~~~~~~~~~^~~
../src/bmp/BMPParser.cc:10:25: note: in definition of macro ‘E’
#define E(cond, msg) if(cond) return setErr(msg)
^~~~
At global scope:
cc1plus: warning: unrecognized command line option ‘-Wno-cast-function-type’
CXX(target) Release/obj.target/canvas/src/Backends.o
CXX(target) Release/obj.target/canvas/src/Canvas.o
CXX(target) Release/obj.target/canvas/src/CanvasGradient.o
CXX(target) Release/obj.target/canvas/src/CanvasPattern.o
CXX(target) Release/obj.target/canvas/src/CanvasRenderingContext2d.o
CXX(target) Release/obj.target/canvas/src/closure.o
CXX(target) Release/obj.target/canvas/src/color.o
CXX(target) Release/obj.target/canvas/src/Image.o
CXX(target) Release/obj.target/canvas/src/ImageData.o
CXX(target) Release/obj.target/canvas/src/init.o
CXX(target) Release/obj.target/canvas/src/register_font.o
SOLINK_MODULE(target) Release/obj.target/canvas.node
COPY Release/canvas.node
make: Leaving directory '/home/max/Desktop/test/node_modules/canvas/build'
+ canvas@2.7.0
added 95 packages from 38 contributors and audited 95 packages in 32.433s
5 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
如果我现在运行一个简单的程序:
const canvas = require('canvas');
我总是会收到以下错误:
internal/modules/cjs/loader.js:1122
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: /snap/core/current/lib/i386-linux-gnu/libz.so.1: version `ZLIB_1.2.9' not found (required by /usr/lib/i386-linux-gnu/libpng16.so.16)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1122:18)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/home/max/Desktop/test/node_modules/canvas/lib/bindings.js:3:18)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)