web-dev-qa-db-fra.com

Erreur: le module spécifié est introuvable

J'essaie d'utiliser Edge.js pour exécuter du code .NET pour imprimer sur Windows dans une application Electron. J'ai essayé electron-Edge et j'ai également essayé de construire manuellement les modules Edge.js ciblant Electron en suivant les instructions dans les documents Electron , mais je continue à obtenir ce qui suit erreur lorsque j'essaie d'utiliser Edge dans l'application packagée:

Error: The specified module could not be found.
\\?\C:\path\to\app\app-1.0.0\resources\app.asar.unpacked\node_modules\Edge\lib\native\win32\x64\6.5.0\Edge_nativeclr.node
    at Error (native)
    at process.module.(anonymous function) (ELECTRON_ASAR.js:178:20)
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:178:20)
    at Object.Module._extensions..node (module.js:583:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:192:18)
    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)

J'ai vérifié le système de fichiers et le Edge_nativeclr.node le module existe, en fait. Je soupçonne que je ne suis pas en train de construire le module correctement et qu'il cible peut-être toujours la mauvaise version du nœud et qu'électron n'est donc pas en mesure d'importer le module.

J'ai essayé plusieurs choses différentes, notamment en suivant étapes d'Electron-Edge pour mettre à jour manuellement le build.bat et ajoutez le --target=1.4.12 --dist-url=https://atom.io/download/atom-Shell drapeaux sur le node-gyp configure build.

J'ai également défini les options de configuration npm suivantes dans mon .npmrc:

target=1.4.12
Arch=x64
target_Arch=x64
disturl=https://atom.io/download/electron
runtime=electron
build_from_source=true
msvs_version=2015

Et a couru le build.bat, en veillant à définir le Edge_NATIVE variable d'environnement pour pointer vers le Edge_nativeclr.node fichier, mais a obtenu le même résultat.

17
Douglas Ludlow

J'ai finalement compris cela après m'être cogné la tête contre le clavier pendant quelques jours. J'ai reçu quelques indices de electron-userland/electron-packager#217 et electron/electron#892 , qui indiquait que cette erreur, "Le module spécifié était introuvable", pouvait se produire lorsque le module natif manquait une dépendance, telle qu'un .dll, et que vous pourriez utiliser Dependency Walker pour vérifier les dépendances de tout .node module.

J'ai chargé Edge_nativeclr.node dans Dependency Walker et a remarqué que VCRUNTIME140.DLL, le runtime Visual Studio 2015 C, était manquant. Edge.js est fourni avec le msvcr120.dll, le runtime Visual Studio 2013 C, mais j'avais reconstruit le module avec le msvs_version défini sur 2015.

Une fois que j'ai placé une copie du vcruntime140.dll dans le même répertoire que Edge_nativeclr.node, tout a commencé à fonctionner comme prévu.

25
Douglas Ludlow

J'ai également eu cette erreur même si VC64 Redistributable x64 était correctement installé. Il s'avère que l'erreur dans mon cas n'était pas vraiment un problème car tout fonctionnait bien (j'ai pu exécuter l'application de démarrage rapide d'électrons avec electron-Edge).

Malgré cela, l'auteur a corrigé l'installation afin que l'erreur ne se produise pas. https://github.com/kexplo/electron-Edge/issues/25#issuecomment-272908409

En outre, si vous chargez Edge_nativeclr.node dans Dependency Walker, vous verrez le VCRUNTIME140.DLL résolu correctement (par exemple sous C:\Windows\System32 sur mon PC). Cependant, vous pouvez voir plusieurs points d'interrogation et erreurs. Il s'avère que cela est simplement dû à certaines limitations de Dependency Walker et non à un problème réel. Voir Dependency Walker: dll manquants

1
victtim