Gibt es einen anderen Weg, außer process.cwd()
, um den Pfadnamen des Root-Verzeichnisses des aktuellen Projekts zu erhalten. Implementiert Node so etwas wie die Eigenschaft von Ruby, Rails.root
,. Ich bin auf der Suche nach etwas, das konstant und zuverlässig ist.
Antworten
Zu viele Anzeigen?Eigentlich finde ich die vielleicht trivialste Lösung auch am robustesten: Du legst einfach folgende Datei in das Root-Verzeichnis deines Projekts: Root-path.js, die den folgenden Code enthält:
import * as path from 'path'
const projectRootPath = path.resolve(__dirname)
export const rootPath = projectRootPath
Eine Technik, die sich bei der Verwendung von express als nützlich erwiesen hat, ist das Hinzufügen der folgenden Zeile in app.js, bevor die anderen Routen festgelegt werden
// set rootPath
app.use(function(req, res, next) {
req.rootPath = __dirname;
next();
});
app.use('/myroute', myRoute);
Sie brauchen keine Globals zu verwenden und haben den Pfad des Root-Verzeichnisses als Eigenschaft des Anfrageobjekts.
Dies funktioniert, wenn sich Ihre app.js im Stammverzeichnis Ihres Projekts befindet, was standardmäßig der Fall ist.
Fügen Sie dies irgendwo am Anfang Ihrer Hauptanwendungsdatei ein (z. B. app.js):
global.__basedir = __dirname;
Damit wird eine globale Variable gesetzt, die immer mit dem Basisverzeichnis Ihrer Anwendung übereinstimmen wird. Verwenden Sie sie wie jede andere Variable:
const yourModule = require(__basedir + '/path/to/module.js');
Einfach...
Ich weiß, dass es dafür bereits zu spät ist. Aber wir können die Root-URL mit zwei Methoden abrufen
1. Methode
var path = require('path');
path.dirname(require.main.filename);
2. Methode
var path = require('path');
path.dirname(process.mainModule.filename);
Referenz-Link:- https://gist.github.com/geekiam/e2e3e0325abd9023d3a3