Support loading dynamic addon modules (`.node` files) when embedding the Node.js shared library without needing to link with `node.def`
Personne n'a encore pris cette issue.
- Langage dominant
- JavaScript
- Étoiles
- 122k
- Forks
- 37.3k
- Merge moyen
- 4 j 2 h
- PR mergées (30 j)
- 283
Description
What is the problem this feature will solve?
Node.js addon modules on Windows current import from the node.exe executable, when you build Node.js as a shared library, it reexports all the needed symbols from the node shared library from the executable using a generated node.def file.
If you embed the Node.js shared library into a different executable/program, for loading such addon modules to work, that executable will need to be linked with node.def to reexport the needed symbols.
node-gyp also adds win_delay_load_hook.cc to addons on Windows to make them work when the Node.js executable is renamed.
What is the feature you are proposing to solve the problem?
Maybe we can support loading such addon modules without this requirement?
For example, what if the delay load hook looked for an env var (e.g. NODE_LIBRARY) that it would then pass to GetModuleHandle instead of NULL if it is set, and when Node.js is built as a shared library, it would set this env var before dynamically loading a module?
Though I'm not sure what security implications such a mechanism may have...
What alternatives have you considered?
No response
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencer par win_delay_load_hook.cc de node-gyp et le chemin de chargement des bibliothèques partagées de Node.js décrit dans l’issue, notamment node.def et GetModuleHandle. Déterminer un mécanisme pris en charge permettant aux programmes intégrés de charger des modules .node sans établir de lien avec node.def, et définir le comportement de sécurité ; le travail est terminé lorsque cela fonctionne pour Node.js intégré sous Windows sans casser les exécutables renommés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- javascript, node.js
- Domaine
- operating-systems
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- Calme
- Clarté
- À clarifier
- Accessibilité débutants
- 32/100