动态 link 库 (DLL) 初始化例程失败 | nw.js 连接错误 canvas

A dynamic link library (DLL) initialization routine failed | nw.js error connecting canvas

我使用 nw.js 并尝试连接 canvas 模块(node-canvas)时出现此错误。安装不同版本的 node/canvas 没有帮助。错误出现时 require('canvas') 错误图片: Error

Uncaught Error: A dynamic link library (DLL) initialization routine failed.
\?\N:\BOTSer\Protocol\node_modules\canvas\build\Release\canvas.node
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1224:18)
    at Module.load (node:internal/modules/cjs/loader:999:32)
    at Function.Module._load (node:internal/modules/cjs/loader:846:12)
    at Module.require (node:internal/modules/cjs/loader:1023:19)
    at require (node:internal/modules/cjs/helpers:97:18)
    at Object.<anonymous> (N:\BOTSer\Protocol\node_modules\canvas\lib\bindings.js:3:18)
    at Module._compile (node:internal/modules/cjs/loader:1121:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1179:10)
    at Module.load (node:internal/modules/cjs/loader:999:32)
    at Function.Module._load (node:internal/modules/cjs/loader:846:12)
    ```

该模块需要与 Node.js 的全局安装兼容的本机构建。如果 NW.js 中的 Node 版本与您的全局安装不匹配,那么构建的二进制文件将无法使用它。当您切换全局 Node.js 安装版本以匹配 NW.js 中内置的版本时,事情总是会更好。您可以使用 nvm-windowsnvm 来控制您的全局节点版本,只需确保在使用节点版本管理器之前先卸载 Node.js ,这样您就不会有两个冲突的全局安装。您可以通过 运行 console.log(process.version);.

查看 NW.js 中的 Node.js 版本

如果我的假设是正确的那么:

  1. 打开您的应用程序,right-click > 检查 > 控制台 > process.version > 记下您需要的节点版本 > 关闭您的应用程序。
  2. 删除node_modulespackage-lock.json
  3. 全局卸载Node.js
  4. 为您的 OS
  5. 安装正确的节点版本管理器
  6. 使用节点版本管理器安装您在步骤 1 中记下的版本
  7. 在您的项目中重新 npm install 并再次尝试 运行

尽管我很困惑为什么您要将原生 canvas 模块与 NW.js 一起使用。为什么要将整个浏览器与内置 canvas 的应用程序打包在一起,然后引入第二个工具并改为使用它?只需使用浏览器的 canvas.