2015-09-08 7 views
6

Katalog główny mojego projektu węzła znajduje się w katalogu, który sam jest katalogiem głównym innego projektu węzła. Tak więc oba foldery zawierają package.json i node_modules. Problem polega na tym, że w projekcie wewnętrznym, czasami I require moduły nie są zainstalowane w tym projekcie. Ale Node po cichu znajduje je w projekcie nadrzędnym node_modules, co prowadzi do irytujących niespodzianek. Czy mogę jakoś temu zapobiec? Nie chciałbym zmieniać struktury katalogów projektów, chyba że jest to jedyne rozwiązanie.Zapobiegnij wymaganiu (...) od wyszukiwania modułów w katalogu nadrzędnym

+0

Wymagaj nie będzie przechodzić w górę drzewa ścieżki. Czy możesz opublikować swoją strukturę plików? –

+0

Zobacz https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders – thorn

+0

To nie jest twoja struktura folderów. –

Odpowiedz

6

Węzeł próbuje rozwiązać bieżącą nazwę ścieżki modułu i łączy node_modules z każdym katalogiem nadrzędnym. [Source].

Możesz zastąpić tę metodę u góry modułu projektu i dodać logikę, aby wykluczyć katalogi nadrzędne z tablicy ścieżek wyników.

//app.js <-- parent project module, should be added at the top 

var Module = require('module').Module; 
var nodeModulePaths= Module._nodeModulePaths; //backup the original method 

Module._nodeModulePaths = function(from) { 
    var paths = nodeModulePaths.call(this, from); // call the original method 

    //add your logic here to exclude parent dirs, I did a simple match with current dir 
    paths = paths.filter(function(path){ 
     return path.match(__dirname) 
    }) 
    return paths; 
}; 

zainspirowany this module

Powiązane problemy