Automattic / Automattic/node-canvas

Cryptic error when calling `require('canvas')` in different modules

Open
#573 2 comments 0 reactions 0 assignees View on GitHub
Bug
Dominant language
JavaScript
Stars
10.7k
Forks
1.2k
Avg merge
4d 8h
Merged PRs (30d)
1

Description

In a `.js` file that has `require('canvas')`, `require` another file that itself also includes `require('canvas')`. You’ll get a cryptic error message, depending on which version of io.js/Node.js you’re using.

Minimal test case to reproduce the issue: https://gist.github.com/mathiasbynens/ddc03a5d8e52c48bcd35

The specific error messages are below.
## io.js v2.2.1

```
$ nvm use iojs
Now using io.js v2.2.1

$ node reproduce-bug.js
module.js:351
Module._extensions[extension](this, filename);
^
Error: Module version mismatch. Expected 44, got 14.
at Error (native)
at Module.load (module.js:351:32)
at Function.Module._load (module.js:306:12)
at Module.require (module.js:361:17)
at require (module.js:380:17)
at Object. (/tmp/node-canvas-bug/node_modules/canvas/lib/bindings.js:2:18)
at Module._compile (module.js:426:26)
at Object.Module._extensions..js (module.js:444:10)
at Module.load (module.js:351:32)
at Function.Module._load (module.js:306:12)
```
## Node.js v0.12

```
$ nvm use 0.12
Now using node v0.12.2

$ node reproduce-bug.js
module.js:355
Module._extensions[extension](this, filename);
^
Error: Module did not self-register.
at Error (native)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object. (/tmp/node-canvas-bug/node_modules/Canvas/lib/bindings.js:2:18)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
```

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.