Ich versuche, eine einfache Electron App zu schreiben, die native Windows-Benachrichtigungen verwendet. Für diese Verwendung bin ich auf electron-windows-interactive-notifications angewiesen.Kann native Windows-Bibliothek in NodeJS nicht verwenden
Wenn ich laufen npm install
und danach electron-rebuild
auf mein Projekt, das ich bekommen:
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)
Nach einer NodeJS issue kann es eine native Abhängigkeitsproblem sein. Als ich untersuche notifications_bindings.node
von dependencywalker Ich sehe folgende fehlenden direkten DLLs (unter vielen fehlenden verschachtelt):
Ehrlich gesagt habe ich keine Ahnung, was das Problem ist:
- falsche Verwendung von Electron?
- falsche Verwendung von electron-windows-interactive-notifications?
- problem in NodeRT?
- problem in node-gyp?
- Problem in meiner Umgebung?
Können Sie mir helfen, der Problemlösung einen Schritt näher zu kommen?
Vielen Dank!
Question was also asked here
wieder aufzubauen Es sieht aus wie Sie node.dll und interactivenotifications.dll fehlt (gelinde gesagt). Sind sie vorhanden neben Ihrer Hauptdatei .exe (electron.exe oder etwas anderes) –
@SimonMourier danke für die Antwort. Nun, wenn ich nach fehlenden .dlls suche, sehe ich sie an folgenden Stellen: ** node.dll ** - 'node_modules \ electron \ dist \'; ** interactivnotifications.dll ** - 'node_modules \ electron-windows-interactive-notifications \ Freigabe \'; ** api -...- .dll ** - 'c: \ Programme (x86) \ Windows-Kits \ 10 \ Redist \ ucrt \ DLLs \ x64 \ api-ms-win-crt-runtime-l1-1 -0.dll '; Ich würde sagen, sie müssen relativ oder absolut referenziert werden auf die gleiche Weise wie die richtige kernel32.dll oder ole32.dll –
Sie sollten sie einfach in das gleiche Verzeichnis wie die Haupt-exe (electron.exe oder andere, wenn Sie es umbenannt kopieren). Sie müssen sie nicht in \ windows \ system32 setzen –