Y a-t-il un autre moyen, autre que process.cwd()
pour obtenir le nom du chemin du répertoire racine du projet en cours. Est-ce que Node implémente quelque chose comme la propriété de Ruby, Rails.root
,. Je cherche quelque chose qui soit constant et fiable.
Réponses
Trop de publicités?Une technique que j'ai trouvée utile lors de l'utilisation d'express est d'ajouter ce qui suit à app.js avant que toutes les autres routes soient définies
// set rootPath
app.use(function(req, res, next) {
req.rootPath = __dirname;
next();
});
app.use('/myroute', myRoute);
Il n'est pas nécessaire d'utiliser les globales et vous avez le chemin du répertoire racine comme propriété de l'objet de la demande.
Cela fonctionne si votre app.js se trouve dans la racine de votre projet, ce qui est le cas par défaut.
En fait, je trouve que la solution peut-être triviale est aussi la plus robuste : vous placez simplement le fichier suivant dans le répertoire racine de votre projet : Root-path.js qui contient le code suivant :
import * as path from 'path'
const projectRootPath = path.resolve(__dirname)
export const rootPath = projectRootPath
Ajoutez-le quelque part vers le début de votre fichier d'application principal (par exemple, app.js) :
global.__basedir = __dirname;
Ceci définit une variable globale qui sera toujours équivalente au répertoire de base de votre application. Utilisez-la comme n'importe quelle autre variable :
const yourModule = require(__basedir + '/path/to/module.js');
Simple...
Je sais que celui-ci est déjà trop tard. Mais nous pouvons récupérer l'URL de la racine par deux méthodes
1ère méthode
var path = require('path');
path.dirname(require.main.filename);
2ème méthode
var path = require('path');
path.dirname(process.mainModule.filename);
Lien de référence:- https://gist.github.com/geekiam/e2e3e0325abd9023d3a3