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