rebuild: Failed Rebuilding canvas: error LNK2019: unresolved external symbol "__declspec(dllimport) public: class std::shared_ptr __cdecl v8::ArrayBuffer::GetBackingStore(void)"

Well, I have a dead simple Electron app with only canvas and nan as dependencies alongside electron and react, running on a Windows 11 (21H2) machine.

What I’m trying to do is to rebuild canvas for electron using electron-rebuild. However, It’s failing with the following error :

Canvas.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class std::shared_ptr<class v8::BackingStore> __cdecl v8::ArrayBuffer::GetBackingSto
re(void)" (__imp_?GetBackingStore@ArrayBuffer@v8@@QEAA?AV?$shared_ptr@VBackingStore@v8@@@std@@XZ) referenced in function "void __cdecl parsePNGArgs(class v8::Local<class
v8::Value>,struct PngClosure &)" (?parsePNGArgs@@YAXV?$Local@VValue@v8@@@v8@@AEAUPngClosure@@@Z) [C:\Users\ebrah\Desktop\NFT_Generator-master\node_modules\canvas\build\ca
nvas.vcxproj]
CanvasRenderingContext2d.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::shared_ptr<class v8::BackingStore> __cdecl v8::ArrayBuf
fer::GetBackingStore(void)" (__imp_?GetBackingStore@ArrayBuffer@v8@@QEAA?AV?$shared_ptr@VBackingStore@v8@@@std@@XZ) [C:\Users\ebrah\Desktop\NFT_Generator-master\node_modu
les\canvas\build\canvas.vcxproj]
ImageData.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::shared_ptr<class v8::BackingStore> __cdecl v8::ArrayBuffer::GetBacking
Store(void)" (__imp_?GetBackingStore@ArrayBuffer@v8@@QEAA?AV?$shared_ptr@VBackingStore@v8@@@std@@XZ) [C:\Users\ebrah\Desktop\NFT_Generator-master\node_modules\canvas\buil
d\canvas.vcxproj]
C:\Users\ebrah\Desktop\NFT_Generator-master\node_modules\canvas\build\Release\canvas.node : fatal error LNK1120: 1 unresolved externals [C:\Users\ebrah\Desktop\NFT_Genera
tor-master\node_modules\canvas\build\canvas.vcxproj]

Here are ALL my system/app information

  • Operating System image

  • Architecture : x64 (Typical Intel Core-I7 processor 9750H)

  • Global Environment

    • Node v16.9.1 (using nvm)
    • NPM 7.21.1
    • node-gyp v8.4.0
  • Application Details

    • Dependencies
    "dependencies": {
        "canvas": "2.8.0",
        "electron": "16.0.1",
        "nan": "2.15.0",
        "react": "^16.13.1",
        "react-dom": "^16.13.1"
    },
    "devDependencies": {
        "@babel/core": "^7.11.6",
        "@babel/preset-env": "^7.11.5",
        "@babel/preset-react": "^7.10.4",
        "babel-loader": "^8.1.0",
        "css-loader": "^4.3.0",
        "electron-rebuild": "^3.2.5",
        "electron-reload": "^1.5.0",
        "sass": "^1.26.11",
        "sass-loader": "^10.0.2",
        "style-loader": "^1.2.1",
        "webpack": "^5.64.1",
        "webpack-cli": "^4.9.1"
    }
    

What I was doing

After running npm i I ran npm run rebuild which delegates to electron-rebuild -f -w canvas, and the error showed up along with some other warnings

What I was expecting

canvas to be built correctly to the correct version of electron I’m using, for this error to stop ruining my business. image

Waiting for your reply.

P.S. This is how the executon of electron-rebuild looks like on Git Bash / CMD on windows (also the same applies for electron-rebuild.cmd)

ezgif-3-465f949847a1

About this issue

  • Original URL
  • State: open
  • Created 3 years ago
  • Reactions: 2
  • Comments: 20

Most upvoted comments

I found that: https://www.npmjs.com/package/@napi-rs/canvas could solve problems but i’m not sure

workd for me.

I case you use it: replace CanvasRenderingContext2D with SKRSContext2D

Full log on my machine: https://gist.github.com/hansSchall/621b030d3cbde724178b427707b1219a