无法在 NodeJS 中使用本机 Windows 库

Posted

技术标签:

【中文标题】无法在 NodeJS 中使用本机 Windows 库【英文标题】:Unable to use native Windows library in NodeJS 【发布时间】:2017-07-06 17:08:21 【问题描述】:

我正在尝试编写一个使用 Windows 本机通知的简单 Electron 应用程序。对于这个用途,我依赖electron-windows-interactive-notifications。

当我在我的项目上运行npm installelectron-rebuild 之后,我得到:

App threw an error during load
Error: The specified module could not be found.
\\?\C:\Users\moro\projects\tw-en-ty\node_modules\electron-windows-interactive-notifications\build\Release\notifications_bindings.node
    at Error (native)
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20)
    at Object.Module._extensions..node (module.js:583:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at bindings (C:\Users\moro\projects\tw-en-ty\node_modules\bindings\bindings.js:76:44)

根据NodeJS issue,这可能是本机依赖问题。当我通过 dependencywalker 检查 notifications_bindings.node 时,我看到以下缺少的直接 DLL(在许多缺少的嵌套中):

坦率地说,我不知道问题是什么:

Electron 使用错误? electron-windows-interactive-notifications 使用错误? NodeRT 中的问题? node-gyp 中的问题? 我的环境有问题?

你能帮我离问题解决更近一步吗?

非常感谢!

问题也被问到here

【问题讨论】:

看起来您缺少 node.dll 和 interactivenotifications.dll(至少可以这么说)。它们是否存在于您的主 .exe 文件(electron.exe 或其他文件) @SimonMourier 感谢您的回复。好吧,当我搜索丢失的 .dll 时,我会在以下位置看到它们:node.dll - node_modules\electron\dist\ ; interactivenotifications.dll - node_modules\electron-windows-interactive-notifications\Release\ ; api-...-.dll - c:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x64\api-ms-win-crt-runtime-l1-1-0.dll ;我会说它们需要以与正确的 kernel32.dll 或 ole32.dll 相同的方式相对或绝对引用 您应该将它们复制到与主 exe(electron.exe 或其他,如果您重命名它)相同的目录中。你不需要把它们放在 \windows\system32 @SimonMourier - 复制它们后,出现了一个新错误:App threw an error during load Error: %1 is not a valid Win32 application. 通过用 64 位依赖项替换一些 32 位依赖项解决此问题后,我得到 A dynamic link library initialization routine failed. 我认为这整个路径- 一步一步的黑客是一个死胡同。我希望图书馆的创建者能看看这个。 @MartinD 你明白了吗?遇到同样的问题... 【参考方案1】:

尝试以下操作:

首先安装 MS Visual Studio。 npm install --global windows-build-tools 以管理员身份运行 运行电子重建.\node_modules\.bin\electron-rebuild.cmd

替代方法:

cd node_modules\electron-windows-interactive-notifications node-gyp rebuild --target=1.8.4 --arch=x64 --dist-url=https://atom.io/download/electron 其中 1.8.4 是电子版

【讨论】:

以上是关于无法在 NodeJS 中使用本机 Windows 库的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Windows 上使用电子 4.0.6 加载一些本机节点 js 模块

在 WSL2 中:安装了适用于 Windows 10 nodejs 的 Ubuntu 20.04,但 npm 无法正常工作

Ruby with RailsInstaller,无法在 Windows 上构建 gem 本机扩展

通过 NodeJS 与 MongoDB 反应本机 [关闭]

windows下安装nodejs

无服务器 NodeJS / 本机 node_modules