J'essaie d'exiger un fichier relativement et mystérieusement ce qui suit se passe
Ceci fonctionne bien, ce qui pointe sur Ce n'est pas que cela ne doit pas indiquer exactement le même fichier: p> Quelqu'un sait pourquoi je ne peux pas toujours utiliser résulte: p> de toute façon? p> Merci d'avance p> p> /users/marcos/desktop/taper/lib/utils.js code> P >
./ code> dans ce cas pour charger le chemin depuis p>
3 Réponses :
mis à jour: strong> p>
du Documentation : P>
Un module préfixé avec Un module préfixé avec sans leader '/' ou './' pour indiquer un fichier, le module est soit
un "module de base" ou est chargé à partir d'un dossier code> node_modules code>. p>
Si le chemin donné n'existe pas, Voici la réponse originale, qui fait référence à à partir du Documentation : P>
dans le nœud, (mettre l'accent sur le mien) p>
'/' code> est un chemin absolu vers le fichier. Pour
exemple,
exiger ('/ home / marco / foo.js') code> chargera le fichier à
/home/marco/foo.js code>. p>
'./' code> est relatif au fichier appelant
exiger () code>.
C'est-à-dire,
cercle.js code> doit être dans le même répertoire que
foo.js code> pour
nécessite ('./ cercle') code> pour le trouver. p>
nécessite () code> lancera une erreur avec
Son
code code> défini sur
'module_not_found' code>. p>
blockQuote>
exiger.Paths code> (ce qui n'est plus pris en charge): P>
exiger.Paths code> est une matrice de chaînes qui représentent des chemins à rechercher des modules
'/' code>, < code> './' code> ou
'../' code>. strong> p> p>
Ah OK, maintenant cela a du sens :) Donc, si certaines des cordes ci-dessus sont mentionnées, cela ignore simplement la section des chemins. Donc je suppose qu'il n'y a aucun moyen de réaliser cela alors malheureusement, merci Martjin
Peut-être une bonne solution pour cela serait de trouver et de remplacer ces préfixes de processus.stdin code> et ajoute le
processus.cwd () code> à celui-ci :) pourrait fonctionner
@LUDICCO: N'est-il pas possible que vos utilisateurs puissent mettre utils.js code> dans un Node_Modules / Annuaire quelque part sur le chemin?
Vous pouvez transmettre qu'utiliser exemple: p> node_path code>
Vous êtes un sauveur! BC Certaines personnes gèrent simplement leur code de base comme celle-ci: exiger ('lib / mongo / get-db'); code>. Et je dois trouver comment courir cette chose!
J'ai créé un nouveau module de noeud appelé rekuire em>. p>
Cela vous permet de "exiger" sans utiliser des chemins relatifs. P>
C'est un économiseur de temps élevé en matière de test / refactoring. P>
https://npmjs.org/package/rekuire p>
blockQuote>
Je regardais le code source de rekuire et je remarquais qu'il commence à rechercher des fichiers JS en faisant ./../../../../. Cela signifie-t-il si j'ai quelques projets de nœud dans le même dossier racine, qu'ils pourraient finir par partager le code?
Non, il s'agit simplement d'établir le dossier de base, j'ai spécifiquement empêché les modules saignants entre les dépendances.
Notez que les docs disent Veuillez éviter la modification de requis.Paths A >
Merci Marjin Je suis d'accord, mais la chose est que ceci est pour un simple paquet de texte qui lit STDIN et ajoutez l'actuel
processus.CWD () code> au chemin requis, afin que les utilisateurs puissent exécuter le nœud. Code rapidement, sans avoir à modifier leurs chemins actuels.
Noeuds 0.6 States qui nécessitent.Paths est supprimé Utilisez Node_Modules Dossiers ou la variable d'environnement Node_Path.