Automattic / Automattic/node-canvas

canvas fails to run on Mac after npm install

Open
#2,193 3 comments 5 reactions 0 assignees View on GitHub
Installation help
Dominant language
JavaScript
Stars
10.7k
Forks
1.2k
Avg merge
4d 8h
Merged PRs (30d)
1

Description

## Issue or Feature
- [x ] If this is an issue with installation, I have read the [troubleshooting guide](https://github.com/Automattic/node-canvas/issues/1511).

I have this old project I'm trying to run on Mac but I keep getting this error from canvas.node and i have tried resolving it with so many solutions I found on the internet.

## Error
node:internal/modules/cjs/loader:1302
return process.dlopen(module, path.toNamespacedPath(filename));
^

Error: dlopen(/mac/api/node_modules/canvas/build/Release/canvas.node, 1): Library not loaded: @loader_path/libpixman-1.0.42.2.dylib
Referenced from: /mac/api/node_modules/canvas/build/Release/canvas.node
Reason: no suitable image found. Did find:
/mac/api/node_modules/canvas/build/Release/libpixman-1.0.42.2.dylib: cannot load 'libpixman-1.0.42.2.dylib' (load command 0x80000034 is unknown)
/mac/api/node_modules/canvas/build/Release/libpixman-1.0.42.2.dylib: cannot load 'libpixman-1.0.42.2.dylib' (load command 0x80000034 is unknown)
at Module._extensions..node (node:internal/modules/cjs/loader:1302:18)
at Module.load (node:internal/modules/cjs/loader:1081:32)
at Module._load (node:internal/modules/cjs/loader:922:12)
at Module.require (node:internal/modules/cjs/loader:1105:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object. (/mac/api/node_modules/canvas/lib/bindings.js:3:18)
at Module._compile (node:internal/modules/cjs/loader:1218:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)
at Module.load (node:internal/modules/cjs/loader:1081:32)
at Module._load (node:internal/modules/cjs/loader:922:12)
at Module.require (node:internal/modules/cjs/loader:1105:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object. (/mac/api/node_modules/canvas/lib/canvas.js:9:18)
at Module._compile (node:internal/modules/cjs/loader:1218:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1272:10)
at Module.load (node:internal/modules/cjs/loader:1081:32) {
code: 'ERR_DLOPEN_FAILED'
}

Node.js v18.13.0

## Code

```js
const express = require('express');
const JsBarcode = require('jsbarcode');
const { createCanvas } = require('canvas');

const { handleErrors } = require('../helpers');

const api = process.env.API_PREFIX;
const router = new express.Router();

// Generate Barcode
router.get(`${api}/barcode/:data`, async (req, res) => {
const { data } = req.params;

try {
if (!data) {
return res.status(404).send();
}

const canvas = createCanvas(250, 100, 'image');
JsBarcode(canvas, data, {
fontSize: 24,
fontOptions: 'bold',
mod43: true,
});
const buffer = canvas.toBuffer();

res.set('Content-Type', 'image/png');
res.status(200).send(buffer);
} catch (e) {
handleErrors(e, res);
}
});

module.exports = router;

```

## Your Environment
* Version of node-canvas (output of `npm list canvas` or `yarn list canvas`):
*├── canvas@2.11.0
└─┬ jest@26.6.3
└─┬ @jest/core@26.6.3
└─┬ jest-config@26.6.3
└─┬ jest-environment-jsdom@26.6.2
└─┬ jsdom@16.7.0
└── canvas@2.11.0 deduped
* Environment node v18.13.0 on Mac OS X 10.14):

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.