Comment écrire ceci pour remonter les 2 niveaux parent pour trouver un fichier?
fs.readFile(__dirname + 'foo.bar');
javascript
node.js
filesystems
fantaisie
la source
la source
fs.readFile(__dirname + '/../../foo.bar');
et cela a fonctionné.__dirname
c'était'/foo/bar'
quelque chose comme plutôt que'/foo/bar/'
.__dirname
peut ressembler/path/to/your/dir
, si vous dites__dirname + ".."
qu'il est/path/to/your/dir..
, ce qui est un répertoire inexistant, plutôt que/path/to/your
. La barre oblique est importante.Utilisez path.join http://nodejs.org/docs/v0.4.10/api/path.html#path.join
path.join()
gérera les barres obliques de début / de fin pour vous et fera ce qu'il faut et vous n'aurez pas à essayer de vous souvenir quand les barres obliques de fin existent et quand elles n'existent pas.la source
path.join
la manière correcte, la réponse acceptée ne doit pas être suivi, il déclenche mêmeeslint
surairbnb-base preset
, la règle no-chemin concat en particulier__dirname
étaithost/src/folder
et je avais besoinhost/folder
et cela a fonctionné pour moi, pas la réponse OP.path.join(__dirname, '..', '..', 'foo.bar')
Je sais que c'est un peu difficile, mais toutes les réponses jusqu'à présent ne sont pas tout à fait exactes.
Le but de path.join () est d'éliminer le besoin pour l'appelant de savoir quel séparateur de répertoire utiliser (rendant la plate-forme de code indépendante).
Techniquement, la bonne réponse serait quelque chose comme:
J'aurais ajouté ceci en commentaire à la réponse d'Alex Wayne mais pas encore assez de rep!
EDIT: selon l'observation de user1767586
la source
Le moyen le plus simple serait d'utiliser
path.resolve
:la source
../
le cheminIl semblerait que vous ayez besoin du
path
module. (path.normalize
en particulier)la source
Si un autre module appelle le vôtre et que vous souhaitez toujours connaître l'emplacement du fichier principal en cours d'exécution, vous pouvez utiliser une modification du code de @ Jason:
De cette façon, vous obtiendrez l'emplacement du script en cours d'exécution.
la source
Si vous n'êtes pas sûr de l'endroit où se trouve le parent, cela vous donnera le chemin;
la source
Vous pouvez utiliser
la source
J'exécute l'application electron et je peux obtenir le dossier parent par path.resolve ()
niveau parent 1:
path.resolve(__dirname, '..') + '/'
parent 2 niveaux:
path.resolve(__dirname, '..', '..') + '/'
la source
cela fonctionnera également:
la source