J'ai rencontré un problème avec mon application Nodejs. J'ai deux applications différentes qui utilisent la bibliothèque partagée, qui est située de sorte qu'elle se trouve à un niveau supérieur dans node_modules. J'ai donc cette structure ./app1/app.js
, ./app2/app.js
et ./node_modules/shared.libs/index.js
. À son tour a d'autres modules installés, comme mangouste, redis, etc. Plus certains modèles de mogoose avec des fonctions supplémentaires en leur sein. Tous sont exportés de index.js
comme ceci:Le module nodejs n'exporte pas la fonction
exports.async = require('async');
exports.config = require('./config');
exports.utils = require('./lib/utils');
Et puis dans les applications je les importer comme ceci:
var libs = require('shared.libs');
var config = libs.config;
Donc, après ce code je peux utiliser config
qui vient de cette bibliothèque partagée. Cette partie était et fonctionne très bien. Mais maintenant, j'ai besoin de mettre une couche supplémentaire sur cette bibliothèque (lire: fournir plus d'interface unifiée pour les deux applications). Ce que j'ai essayé de faire est d'ajouter quelques fonctions dans index.js
de la bibliothèque partagée, puis d'exporter l'objet entier avec ces fonctions. Mais chaque fois que j'essaie d'appeler un objet précédemment importé (par var libs = require('shared.libs');
), il est dit que libs
n'est pas défini.
Qu'est-ce que je fais mal ici? Je veux généralement garder le même code, donc je n'aurai pas besoin de remplacer require
partie partout, mais en même temps fournir des fonctionnalités supplémentaires de la bibliothèque partagée qui sera disponible à partir de cet objet libs
importé.
Afficher plus de code - comment vous essayez d'exporter les nouvelles fonctions, où est le 'require' qui n'est pas travailler, etc –
@IvanVergiliev Le code de la façon dont je 'l'exporter' et comment' 'require' est expliqué à peu près. Comment pourrais-je l'améliorer? J'ai essayé d'exporter directement la fonction comme 'exports.test = function() {console.log (" test ");}' et ensuite 'require' il d'un autre endroit, a également essayé de créer un nouvel objet qui implémente toutes les fonctions nécessaires et' export 'ça. Les deux façons ne fonctionnent pas. Chaque fois que j'essaie d'appeler libs.test(), il me dit que libs est indéfini. Et chaque fois que je vérifie l'objet libs via node-inspector, il me donne la même sortie. – AlexKey
Donc, vous dites que tant que vous avez seulement 'exports.sth = require (module)', tout est bon, mais si vous ajoutez aussi 'exports.fun = function() {}', tout le module s'arrête travailler, est-ce exact? Ça ne sonne pas très bien. –