503 Stimmen

Ermitteln des Projektstamms aus einer laufenden node.js-Anwendung

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.

10voto

Aakash Punkte 17068

Es gibt eine INIT_CWD Eigentum an process.env . Das ist es, womit ich derzeit in meinem Projekt arbeite.

const {INIT_CWD} = process.env; // process.env.INIT_CWD 
const paths = require(`${INIT_CWD}/config/paths`);

Viel Glück...

7voto

Avi Tshuva Punkte 246

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

6voto

Ben Davies Punkte 577

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.

4voto

Pankaj Shinde Punkte 2843

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...

4voto

VIKAS KOHLI Punkte 7314

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X