Sie könnten dies sicherlich tun. Dadurch würden Sie erfolgreich vermeiden, das globale require.paths
-Array zu verändern, was zur Laufzeit Probleme verursachen kann, und sollten keine Probleme mit zukünftigen Veröffentlichungen haben.
Sie sollten einfach ein Modell einrichten können, das Sie einfach in Ihre aktuelle App require
n. Laut Ihrem Beispiel sollte x.js Folgendes enthalten.
var relative = 'y/';
exports.xrequire = function(path) {
console.log("requiring " + relative + path);
return require(relative+path);
};
Dann können Sie erfolgreich Ihr benutzerdefiniertes require
verwenden.
var xrequire = require('x.js'),
hello = xrequire('hello.js');
ICh würde dies nicht empfehlen, aber wenn Sie wirklich hinterlistig sein möchten, könnten Sie die require
-Funktion überschreiben.
var require = xrequire;
Ich würde dies auf jeden Fall gründlich dokumentieren, wenn Sie vorhaben, diese Funktionalität zu require
n :D, aber es funktioniert definitiv.
ÄNDERUNG:
Nun, Sie könnten überprüfen, ob die Datei vorhanden ist und auf require
zurückfallen, wenn sie nicht existiert.
var relative = 'y/';
exports.xrequire = function(path) {
var ret;
try{
ret = require(relative+path);
console.log("requiring " + relative + path);
}catch(e){
console.log("requiring " + path);
ret = require(path);
}
return ret;
};
Ich denke, Sie könnten versuchen, process.cwd
am Anfang des require-Pfads hinzuzufügen, um zuerst im richtigen Verzeichnis zu suchen. Um ehrlich zu sein, würde dies die meisten Entwickler verwirren. Ich würde empfehlen, einfach einen Namespace für Ihre App zu definieren und eine spezielle require-Funktion zu erstellen, die nur die speziellen Funktionen dieser namensspezifischen Apps abruft.