2015-09-08 11 views
6

La directory principale del mio progetto Node si trova in una directory che è essa stessa una radice di un altro progetto di nodo. Quindi entrambe le cartelle contengono package.json e node_modules. Il problema è che nel progetto interno, a volte I moduli require non sono installati in questo progetto. Ma Node li trova solo silenziosamente nel progetto node_modules del genitore che porta a fastidiose sorprese. Posso in qualche modo impedirgli di farlo? Mi piacerebbe non modificare la struttura delle directory dei progetti a meno che non sia l'unica soluzione.Impedire di richiedere (...) di cercare i moduli nella directory superiore

+0

Richiede non attraversare l'albero percorso. Puoi pubblicare la tua struttura di file? –

+0

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

+0

Questa non è la struttura della cartella. –

risposta

6

Il nodo tenta di risolvere il nome del percorso del modulo corrente e concatena node_modules in ciascuna directory principale. [Source].

È possibile sovrascrivere questo metodo nella parte superiore del modulo del progetto e aggiungere una logica per escludere le directory madri dall'array del percorso del risultato.

//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; 
}; 

ispirato this module

Problemi correlati