Reputation:
I have developed a node.js program using the express framework on my computer, where it runs fine with no complaints.
However, when I run the program on my SUSE Studio appliance, where it is intended to live, I receive an error at any file interaction.
Error: ENOENT, stat './path/to/file'
I have checked that the file permissions are correct, which they are. My computer and my appliance are running different versions of node, if this matters.
Any thoughts?
Upvotes: 127
Views: 163451
Reputation: 161457
Paths specified with a .
are relative to the current working directory, not relative to the script file. So the file might be found if you run node app.js
but not if you run node folder/app.js
. The only exception to this is require('./file')
and that is only possible because require
exists per-module and thus knows what module it is being called from.
To make a path relative to the script, you must use the __dirname
variable.
var path = require('path');
path.join(__dirname, 'path/to/file')
or potentially
path.join(__dirname, 'path', 'to', 'file')
Upvotes: 189
Reputation: 1108
Here the code to use your app.js
input specifies file name
res.download(__dirname+'/'+input);
Upvotes: 5