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?
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')
Voici le code pour utiliser votre app.js
l'entrée spécifie le nom du fichier
res.download(__dirname+'/'+input);