3

I tried to install nodejs canvas on my ubuntu 18.04.5 vm. I am using nodejs v14.16.0 installed using the snap package manager.

Following the instructions on the GitHub wiki from node-canvas: https://github.com/Automattic/node-canvas/wiki/Installation:-Ubuntu-and-other-Debian-based-systems

  1. I installed all dependencies for Ubuntu and other Debian based systems:
$ sudo apt-get update 
$ sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev 

(No errors)

  1. I installed node-canvas using npm:
$ npm install canvas

After I ran this command I got following warns and errors in the console:

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

If i now run a simple programm:

const canvas = require('canvas');

I will always get the following error:

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)
Clafter
  • 78
  • 5

0 Answers0