web-dev-qa-db-fra.com

Node.js, impossible d'ouvrir les fichiers. Erreur: ENOENT, stat './path/to/file'

J'ai développé un programme node.js en utilisant le framework express sur mon ordinateur, où tout se passe bien et sans problème.

Toutefois, lorsque j'exécute le programme sur mon appliance SUSE Studio, où il est destiné à vivre, un message d'erreur s'affiche lors de toute interaction de fichier.

Error: ENOENT, stat './path/to/file'

J'ai vérifié que les autorisations de fichier sont correctes, ce qu'elles sont. Mon ordinateur et mon appareil exécutent différentes versions de noeud, si cela est important.

Des pensées?

126
user712410

Les chemins spécifiés avec un . sont relatifs au répertoire de travail actuel et non au fichier de script. Donc, le fichier peut être trouvé si vous exécutez node app.js mais pas si vous exécutez node folder/app.js. La seule exception à cette règle est require('./file') et cela n'est possible que parce que require existe par module et sait donc de quel module il est appelé.

Pour créer un chemin relatif au script, vous devez utiliser la variable __dirname.

var path = require('path');

path.join(__dirname, 'path/to/file')

ou potentiellement

path.join(__dirname, 'path', 'to', 'file')
186
loganfsmyth

Voici le code pour utiliser votre app.js

l'entrée spécifie le nom du fichier

res.download(__dirname+'/'+input);
5
AmirtharajCVijay