34

I installed cairo, and node-canvas. I tried everything, but still can't find module.

sudo apt-get install libcairo2-dev
sudo npm install canvas
sudo npm install canvas -g

If I run require('canvas'), I get this error:

Error: Cannot find module '../build/Release/canvas'
    at Function._resolveFilename (module.js:332:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:354:17)
    at require (module.js:370:17)
    at Object.<anonymous> (/home/tomas/node_modules/canvas/lib/bindings.js:2:18)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:32)
    at Function._load (module.js:308:12)
    at Module.require (module.js:354:17)

I use Ubuntu linux

Thanks in advance.

hong4rc
  • 3,999
  • 4
  • 21
  • 40
friction
  • 787
  • 2
  • 10
  • 15

9 Answers9

23

In my case i have to spend lot of time to resolve this issue.

I just use "npm uninstall canvas" and then install using "npm i canvas"

Try this is if above option not works for you.

akshay_sushir
  • 1,483
  • 11
  • 9
9

It seemed like the install script of canvas haven't been called in my case, too. Instead of deleting the lock file I just called the script manually which solved the issue in my case (at least temporarily).

Therefore, if the canvas package has been installed already, go to /node_modules/canvas/ and run npm run install which creates the build directory.

davsto
  • 442
  • 5
  • 11
7

I had the same problem. The issue was that the install script for node-canvas never got executed, which is why the build folder was missing.

In my case, removing the yarn.lock file was the solution, as it skipped the node-canvas package installation for some reason. Once I let npm take care of the packages, it successfully installed node-canvas, ran the install script and the build folder showed up again.

Marcel Kalveram
  • 1,295
  • 1
  • 14
  • 22
2

Problem here looks like 1. Your node modules are installed in a different location But the node.js runtime is searching for it in a different place. Check the NODE_PATH and see if this is the case.

Refer the module loading explained in http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders

randomness
  • 1,377
  • 1
  • 14
  • 21
1

You can try this:

  • Delete node_modules/ folder
  • Run dependency installations (npm install)
  • Use a different Node version
sampoh
  • 3,066
  • 1
  • 16
  • 14
  • Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Jan 15 '23 at 14:15
0

I had a similar problem but I used canvas-prebuilt which is a drop-in replacement for canvas and I fixed it for doing this: npm install -g node-gyp and then node-gyp rebuild in the terminal

Cris
  • 1
0

Same problem in my nextjs application. In my case. I installed react-pdf package then this problem happened.

My resolve: Just Notify webapck to ignore the canvas module

Add the following webpack options in next.config.js

const nextConfig = {
  webpack(config){
    config.externals.push('canvas')
    return config
  }
};

hyan
  • 36
  • 2
0

In my case:

rm -rf node_modules
rm package-lock.json
npm install

:D

Carlos Noé
  • 103
  • 3
  • 11
-2
sudo apt-get install libpixman-1-dev libcairo2-dev libpangocairo-1.0-0 libpango1.0-dev libgif-dev  libjpeg-dev

If use ubuntu,try install above lib then install canvas.work fine for me。

If you use cnpm install the canvas. try npm.

yo yo
  • 87
  • 1
  • 4