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.

0voto

Guseyn Ismayylov Punkte 365
const __root = `${__dirname.substring(0, __dirname.lastIndexOf('projectName'))}projectName`

`

0voto

Pulkit Aggarwal Punkte 2266

Sie können einfach den Pfad zum Stammverzeichnis in die Express-App-Variable einfügen und diesen Pfad von der App abrufen. Fügen Sie dazu app.set('rootDirectory', __dirname); in Ihrer index.js oder app.js Datei. Und verwenden Sie req.app.get('rootDirectory') um den Pfad zum Root-Verzeichnis in Ihrem Code zu erhalten.

0voto

Eine sehr einfache und zuverlässige Lösung wäre, wenn cd .. rekursive Suche nach package.json da sich diese Datei immer im Root-Verzeichnis des Projekts befindet.

const fs = require('fs')
const path = require('path')

function getAppRootDir () {
  let currentDir = __dirname
  while(!fs.existsSync(path.join(currentDir, 'package.json'))) {
    currentDir = path.join(currentDir, '..')
  }
  return currentDir
}

0voto

Pawan Kumar Punkte 46

Sie können auch Folgendes verwenden git rev-parse --show-toplevel Angenommen, Sie arbeiten an einem Git-Repository

0voto

Nick Bull Punkte 8803

In modernen Versionen von npm können Sie einen Eintrag in exports als Kurzbezeichnung zu verwenden. Beachten Sie, dass Sie, wenn Sie in der Lage sein wollen, sowohl auf den Root selbst als auch auf Dateien innerhalb dieses Roots zu verweisen, beide benötigen ./ y ./* beziehungsweise:

package.json :

{
  "imports": {
    "#root": "./",
    "#root/*": "./*",
    ...
  },
  ...
}

./index.js :

import {namedExport} from '#root/file.js'

./file.js :

export const namedExport = {
  hi: "world",
};

Ensuite :

$ node --experimental-specifier-resolution=node index.js

Sie könnten dies noch weiter ausbauen mit einer constants.js Datei, wobei Sie eine der Methoden aus den obigen Antworten verwenden oder einen absoluten Pfad eingeben können, wenn Sie den Pfad selbst benötigen

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