首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在windows上使用electronjs-17中的节点画布?

如何在windows上使用electronjs-17中的节点画布?
EN

Stack Overflow用户
提问于 2022-02-22 11:50:27
回答 2查看 752关注 0票数 2

我已经为我的窗口安装了使用电子设备构建应用程序的所有基本要素。

版本:

  • node -v v17.5.0
  • npm -v 8.4.1

代码语言:javascript
复制
> My dependencies

  "dependencies": {
    "electron-squirrel-startup": "^1.0.0",
    "extract-zip": "^2.0.1",
    "nan": "^2.15.0",
    "node-canvas": "^2.9.0",
    "node-pre-gyp": "^0.17.0",
    "sha1": "^1.1.1"
  },
  "devDependencies": {
    "@electron-forge/cli": "^6.0.0-beta.63",
    "@electron-forge/maker-deb": "^6.0.0-beta.63",
    "@electron-forge/maker-rpm": "^6.0.0-beta.63",
    "@electron-forge/maker-squirrel": "^6.0.0-beta.63",
    "@electron-forge/maker-zip": "^6.0.0-beta.63",
    "electron": "17.0.0",
    "electron-rebuild": "^3.2.7"
  }

`

误差

创建库D:\test-app-latest\node_modules\node-canvas\build\Release\canvas.lib和对象D:\test-app-latest\node_modules\node-canvas\build\Release\canvas.expCanvas.obj : error LNK2019:未决外部符号"__declspec(dllimport) public: class std::shared_ptr __cdecl v8::ArrayBuffer::GetBackingStore(void)“(_imp?GetBackingStore@Arr ayBuffer@v8@@QEAA?AV?$shared_ptr@VBackingStore@v8@@@std@ )@XZ)在"void __cdecl parsePNGArgs“(类v8::Local,(?parsePNGArgs@@YAXV?$Local@VValue@v8@@v8@ D:\test-app-latest\node_modules\node-canvas\build\canvas.vcxproj CanvasRenderingContext2d.obj : error LNK2001:未解决外部符号"__declspec(dllimport) public: class std::shared_ptr __cdecl v8::ArrayBuffer::GetBackingStore(void)“) (_imp?G ptr@VBackingStore@V8@@std@XZ)D:\test-app-最新版本准备本机依赖关系的\node_modules\node-canvas\build\canvas.vcxproj⠋:0/ 1ImageData.obj : error LNK2001:未解决的外部符号"__declspec(dllimport) public: class std::shared_ptr __cdecl⠋✖,准备本机依赖关系:0/1

在Forge内部发生了一个未处理的错误:node未能重新构建'D:\test-app-latest\node_modules\node-canvas'.。有关更多信息,请将调试环境变量设置为“电子重建”重新运行。

错误:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe失败,退出代码:1

错误:node重新构建'D:\test-app-latest\node_modules\node-canvas'.失败有关更多信息,请将调试环境变量设置为“电子重建”重新运行。

错误:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\MSBuild.exe失败,退出代码:1

代码语言:javascript
复制
at NodeGyp.rebuildModule (D:\test-app-latest\node_modules\electron-rebuild\src\module-type\node-gyp.ts:129:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at ModuleRebuilder.rebuildNodeGypModule (D:\test-app-latest\node_modules\electron-rebuild\src\module-rebuilder.ts:93:5)
at ModuleRebuilder.rebuild (D:\test-app-latest\node_modules\electron-rebuild\src\module-rebuilder.ts:129:8)
at Rebuilder.rebuildModuleAt (D:\test-app-latest\node_modules\electron-rebuild\src\rebuild.ts:203:9)
at Rebuilder.rebuild (D:\test-app-latest\node_modules\electron-rebuild\src\rebuild.ts:158:9)
at D:\test-app-latest\node_modules\@electron-forge\core\src\util\rebuild.ts:38:5

错误命令失败,退出代码1.info访问https://yarnpkg.com/en/docs/cli/run获取有关此命令的文档。

`

EN

回答 2

Stack Overflow用户

发布于 2022-03-11 10:48:28

你现在不能,看看这个:https://github.com/electron/electron/issues/29893

电子项目已经决定在Windows版本中切换到clang/libc++。MSVC和libc++在实现std::shared_ptr时不兼容,这意味着所有要链接在一起的对象文件都必须使用相同的运行时。

目前,node-gyp不支持Windows上的clang。

这意味着许多本地的Node.js加载项都被冷落了。

票数 0
EN

Stack Overflow用户

发布于 2022-04-24 10:40:35

解决办法(从22/04/24 -电子18开始)是坚持上一个电子12版本,该版本仍然在使用Windows上的旧构建环境/API组合,用于本机依赖关系(如画布):

代码语言:javascript
复制
yarn add --dev electron@12.X.X

专门用于节点-画布:

如果使用电子构建器,则通过配置禁用本机依赖项的重建,然后切换到正常工作的电子重建。

电子构建器不能正确地使用节点画布与电子12 (或根本没有)的组合。不管什么..。

它与电子12和电子重建一起工作。

从理论上讲,根据我的理解,可能会出现API或依赖项兼容的情况,但这已经是少数专业了,目前还没有发生任何事情。

如果还需要的话,回头再查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71220787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档