ArcherGu / fast-vite-nestjs-electron

Vite + Vue + Electron + Nestjs with esbuild, crazy fast! ⚡

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

下载编译canvas失败

CloudWoR opened this issue · comments

项目中需要用到node-canvas库,按照官网以及googole上面各种教程尝试后,都无法成功,能帮忙看看什么原因吗?

warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
error D:\project\software\Department\pdfReset\node_modules\canvas: Command failed.
Exit code: 6
Command: node-pre-gyp install --fallback-to-build
Arguments:
Directory: D:\project\software\Department\pdfReset\node_modules\canvas
Output:
node-pre-gyp info it worked if it ends with ok
node-pre-gyp info using node-pre-gyp@1.0.9
node-pre-gyp info using node@16.14.2 | win32 | x64
node-pre-gyp info check checked for "D:\project\software\Department\pdfReset\node_modules\canvas\build\Release\canvas.node" (not found)
node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.9.1/canvas-v2.9.1-node-v93-win32-unknown-x64.tar.gz
node-pre-gyp info install unpacking Release/
node-pre-gyp info install unpacking Release/canvas.exp
node-pre-gyp info install unpacking Release/canvas.ilk
node-pre-gyp info install unpacking Release/canvas.lib
node-pre-gyp info install unpacking Release/canvas.node
node-pre-gyp info install unpacking Release/canvas.pdb
node-pre-gyp ERR! Completion callback never invoked!
node-pre-gyp ERR! System Windows_NT 10.0.22000
node-pre-gyp ERR! command "D:\ProgramFiles\nodejs\node.exe" "D:\project\software\Department\pdfReset\node_modules\@mapbox\node-pre-gyp\bin\node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd D:\project\software\Department\pdfReset\node_modules\canvas
node-pre-gyp ERR! node -v v16.14.2
node-pre-gyp ERR! node-pre-gyp -v v1.0.9
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

node 模块请放在 external 里,在打包是排除在外。构建时会把对应的node模块复制过去的。

我在普通的node项目,以及全局安装cnavas库都是可以正常安装的,但是到了您这个项目下面去安装,就开始报下面这些错误了,方便看看是为什么吗?以及在external里面加入了canvas。

`$ node-pre-gyp install --fallback-to-build

D:\project\software\Department\reset-pdf\node_modules\canvas>if not defined npm_config_node_gyp (node "D:\programFiles\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" clean )  else (node "" clean )


D:\project\software\Department\reset-pdf\node_modules\canvas>if not defined npm_config_node_gyp (node "D:\programFiles\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" configure --fallback-to-build --module=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release\canvas.node --module_name=canvas --module_path=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v18.2 --python=C:\Users\ZM-CloudWoR\AppData\Local\Programs\Python\Python310 --msvs_version=2017 )  else (node "" configure --fallback-to-build --module=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release\canvas.node --module_name=canvas --module_path=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v18.2 --python=C:\Users\ZM-CloudWoR\AppData\Local\Programs\Python\Python310 --msvs_version=2017 )

D:\project\software\Department\reset-pdf\node_modules\canvas>if not defined npm_config_node_gyp (node "D:\programFiles\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" build --fallback-to-build --module=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release\canvas.node --module_name=canvas --module_path=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v18.2 )  else (node "" build --fallback-to-build --module=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release\canvas.node --module_name=canvas --module_path=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v18.2 )
�ڴ˽���������һ������һ����Ŀ����Ҫ���ò������ɣ������ӡ�/m�����ء�
  Copying C:/libjpeg-turbo64/bin/jpeg62.dll to D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release\
  �Ѹ���         1 ���ļ���
  Backend.cc
c:\users\zm-cloudwor\.electron-gyp\18.2.0\include\node\v8-traced-handle.h(240): error C2061: ������: ��ʶ����TracedGlobal<`template-type-parameter-1'>�� [D:\project\software\Department\reset-pdf\node_modules\canvas\build\canvas.vcxproj]
  c:\users\zm-cloudwor\.electron-gyp\18.2.0\include\node\v8-traced-handle.h(335): note: �μ������ڱ����� �� ģ�� ʵ���� "v8::TracedGlobal<T>" ������
c:\users\zm-cloudwor\.electron-gyp\18.2.0\include\node\v8-traced-handle.h(240): error C2334: ��:����ǰ�����������ǣ��������Եĺ����� [D:\project\software\Department\reset-pdf\node_modules\canvas\build\canvas.vcxproj]
c:\users\zm-cloudwor\.electron-gyp\18.2.0\include\node\v8-traced-handle.h(22): fatal error C1075: ��{��: δ�ҵ�ƥ������ [D:\project\software\Department\reset-pdf\node_modules\canvas\build\canvas.vcxproj]
Failed to execute 'node-gyp.cmd build --fallback-to-build --module=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release\canvas.node --module_name=canvas --module_path=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v18.2' (1)

info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

                errorOut=node-pre-gyp info it worked if it ends with ok
node-pre-gyp info using node-pre-gyp@1.0.9
node-pre-gyp info using node@16.14.2 | win32 | x64
node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.9.1/canvas-v2.9.1-electron-v18.2-win32-unknown-x64.tar.gz
node-pre-gyp ERR! install response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.9.1/canvas-v2.9.1-electron-v18.2-win32-unknown-x64.tar.gz
node-pre-gyp WARN Pre-built binaries not installable for canvas@2.9.1 and electron@18.2.0 (electron-v18.2 ABI, unknown) (falling back to source compile with node-gyp)
node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.9.1/canvas-v2.9.1-electron-v18.2-win32-unknown-x64.tar.gz
gyp info it worked if it ends with ok
gyp info using node-gyp@8.4.1
gyp info using node@16.14.2 | win32 | x64
gyp info ok
gyp info it worked if it ends with ok
gyp info using node-gyp@8.4.1
gyp info using node@16.14.2 | win32 | x64
gyp info find Python using Python version 3.10.4 found at "C:\Users\ZM-CloudWoR\AppData\Local\Programs\Python\Python310\python.exe"
gyp info find VS using VS2017 (15.9.28307.1622) found at:
gyp info find VS "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools"
gyp info find VS run with --verbose for detailed information
gyp info spawn C:\Users\ZM-CloudWoR\AppData\Local\Programs\Python\Python310\python.exe
gyp info spawn args [
gyp info spawn args   'D:\\programFiles\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-I',
gyp info spawn args   'D:\\project\\software\\Department\\reset-pdf\\node_modules\\canvas\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'D:\\programFiles\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\ZM-CloudWoR\\.electron-gyp\\18.2.0\\include\\node\\common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=C:\\Users\\ZM-CloudWoR\\.electron-gyp\\18.2.0',
gyp info spawn args   '-Dnode_gyp_dir=D:\\programFiles\\nodejs\\node_modules\\npm\\node_modules\\node-gyp',
gyp info spawn args   '-Dnode_lib_file=C:\\\\Users\\\\ZM-CloudWoR\\\\.electron-gyp\\\\18.2.0\\\\<(target_arch)\\\\node.lib',
gyp info spawn args   '-Dmodule_root_dir=D:\\project\\software\\Department\\reset-pdf\\node_modules\\canvas',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'D:\\project\\software\\Department\\reset-pdf\\node_modules\\canvas\\build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info ok
gyp info it worked if it ends with ok
gyp info using node-gyp@8.4.1
gyp info using node@16.14.2 | win32 | x64
gyp info spawn C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe
gyp info spawn args [
gyp info spawn args   'build/binding.sln',
gyp info spawn args   '/clp:Verbosity=minimal',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=x64'
gyp info spawn args ]
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (D:\programFiles\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
gyp ERR! System Windows_NT 10.0.22000
gyp ERR! command "D:\\ProgramFiles\\nodejs\\node.exe" "D:\\programFiles\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "build" "--fallback-to-build" "--module=D:\\project\\software\\Department\\reset-pdf\\node_modules\\canvas\\build\\Release\\canvas.node" "--module_name=canvas" "--module_path=D:\\project\\software\\Department\\reset-pdf\\node_modules\\canvas\\build\\Release" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=electron-v18.2"
gyp ERR! cwd D:\project\software\Department\reset-pdf\node_modules\canvas
gyp ERR! node -v v16.14.2
gyp ERR! node-gyp -v v8.4.1
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute 'node-gyp.cmd build --fallback-to-build --module=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release\canvas.node --module_name=canvas --module_path=D:\project\software\Department\reset-pdf\node_modules\canvas\build\Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v18.2' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (D:\project\software\Department\reset-pdf\node_modules\@mapbox\node-pre-gyp\lib\util\compile.js:89:23)
node-pre-gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
node-pre-gyp ERR! stack     at maybeClose (node:internal/child_process:1092:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
node-pre-gyp ERR! System Windows_NT 10.0.22000
node-pre-gyp ERR! command "D:\\ProgramFiles\\nodejs\\node.exe" "D:\\project\\software\\Department\\reset-pdf\\node_modules\\@mapbox\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd D:\project\software\Department\reset-pdf\node_modules\canvas
node-pre-gyp ERR! node -v v16.14.2
node-pre-gyp ERR! node-pre-gyp -v v1.0.9
node-pre-gyp ERR! not ok

error Command failed with exit code 1.

                command='D:\ProgramFiles\nodejs\node.exe' 'D:\programFiles\nodeCache\node_global\node_modules\yarn\bin\yarn.js' run install
                workingDir=D:\project\software\Department\reset-pdf\node_modules\canvas

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.`

我看了一下,这个应该是 node-canvas 自身的问题,因为electron应用在安装一些node库时会重新构建适合electron的库。我先看看。

困扰了我三天了。。。hhh
我重新安装了vs2022,执行node-gyp configure --GTK_Root...以及node-gyp configure --jpeg_root...后,全局安装canvas依然通过了,会不会是electron-build出错了?
当node_modules中下载好canvas并报错后,我执行了electron-rebuild,报了以下错误
`。。。
$Local@VValue@v8@@@v8@@AEAUPngClosure@@@z) 中引用了该符号 [D:\project\software\Department\pdfReset\node_modules\canvas\build\c
anvas.vcxproj]
CanvasRenderingContext2d.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class std::shared_ptr __cdecl v8::ArrayBuffer::GetBackingStore(void)" (_imp?GetBackingStore@ArrayBuffer@v8@@qeaa?AV?$shared_p
tr@VBackingStore@v8@@@std@@xz) [D:\project\software\Department\pdfReset\node_modules\canvas\build\canvas.vcxproj]
ImageData.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class std::shared_ptr _
_cdecl v8::ArrayBuffer::GetBackingStore(void)" (_imp?GetBackingStore@ArrayBuffer@v8@@qeaa?AV?$shared_ptr@VBackingStor
e@v8@@@std@@xz) [D:\project\software\Department\pdfReset\node_modules\canvas\build\canvas.vcxproj]
D:\project\software\Department\pdfReset\node_modules\canvas\build\Release\canvas.node : fatal error LNK1120: 1 个无法解 析的外部
命令 [D:\project\software\Department\pdfReset\node_modules\canvas\build\canvas.vcxproj]
× Rebuild Failed

An unhandled error occurred inside electron-rebuild
node-gyp failed to rebuild 'D:\project\software\Department\pdfReset\node_modules\canvas'.
For more information, rerun with the DEBUG environment variable set to "electron-rebuild".

Error: D:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe failed with exit code: 1

Error: node-gyp failed to rebuild 'D:\project\software\Department\pdfReset\node_modules\canvas'.
For more information, rerun with the DEBUG environment variable set to "electron-rebuild".

Error: D:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe failed with exit code: 1

at NodeGyp.rebuildModule (D:\programFiles\nodeCache\node_global\node_modules\electron-rebuild\lib\src\module-type\node-gyp.js:117:19)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async ModuleRebuilder.rebuildNodeGypModule (D:\programFiles\nodeCache\node_global\node_modules\electron-rebuild\lib\src\module-rebuilder.js:94:9)
at async ModuleRebuilder.rebuild (D:\programFiles\nodeCache\node_global\node_modules\electron-rebuild\lib\src\module-rebuilder.js:124:14)
at async Rebuilder.rebuildModuleAt (D:\programFiles\nodeCache\node_global\node_modules\electron-rebuild\lib\src\rebuild.js:145:13)
at async Rebuilder.rebuild (D:\programFiles\nodeCache\node_global\node_modules\electron-rebuild\lib\src\rebuild.js:108:17)
at async D:\programFiles\nodeCache\node_global\node_modules\electron-rebuild\lib\src\cli.js:154:9`

你看下node canvas的issues 里,很多人遇到你的问题,electron 无法rebuild

暂时放弃用canvas吧,我按照里面的方式试了几天了,以前我用quasar-cli编译,通过electron-rebuild -w -f canvas命令可以预编译成功。