3 Node.js Da Projekte Haupt - Rahmen - Repositorys
Haupt hat die beiden anderen Projekten verbunden über npm Link.
In einem Test habe ich die Anforderung in einer Methode verpackt. Ich habe einige Probleme bekam Lösung verknüpfte Projekte (Details siehe unten)
Simplified Code sieht wie folgt aus:
module.export.resolve = function(file){
[...]//Some more logik to handle relative pathes
return require(file)
}
Dies funktioniert in den meisten Szenarien. Ich arbeitete auch raus behandelt mit Verwandten pathes (Suche nach Anrufer und pathes gilt auf diesem Weg basiert)
Nun ist dies in Projektrahmen der (NPM Link) verbunden ist, um Projekt Haupt. Project main hat auch Project Repositories verknüpft.
Jetzt in Projekt Haupt ich habe:
require('ProjectRepositories/foo') // Works as expected
myRequire.resolve('ProjectRepositories/foo') // Returns MODULE_NOT_FOUND "Cannot find module 'ProjectRepositories/foo'
Ich nehme an, das Problem ist, dass Repositorys Projekt ist nicht in dem Projekt Rahmen verknüpft. Aber gibt es einen anderen Weg als sie zu verbinden?
Ich hätte lieber weniger Abhängigkeiten. Irgendwelche Hinweise darauf?
Es ist mir nicht ganz klar, wie Ihre Struktur aussieht. Könnten Sie das klären? Wusstest du inzwischen, dass du einen ['NODE_PATH'] (https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders) env var haben kannst? – gustavohenke
Sie sagen "funktioniert wie erwartet", aber Sie sagen nicht, was es zurückgibt. Es könnte also dasselbe zurückkehren. Von dem, was Sie gepostet haben, tut es genau das gleiche, außer dass Sie zusätzliche Logik geschrieben haben, die möglicherweise etwas durcheinander bringen könnte, was importiert werden muss. Wenn Sie eine resolve2-Funktion erstellen, die 'require (file)' direkt zurückgibt, sollte es genauso gut funktionieren wie Ihr direkter 'require ('ProjectRepos/foo')' Aufruf. Dann würden Sie wahrscheinlich zu dem Schluss kommen, dass Ihre benutzerdefinierte Logik tatsächlich darin besteht, wo der Fehler liegt, nehme ich an. – EricG