Reputation: 63415
I have the following code:
app.js
[...]
server.get(/\/docs\/public\/?.*/, restify.serveStatic({
directory: './public'
}));
server.listen(1337, function() {
console.log('%s listening at %s', server.name, server.url);
});
And I have the following file structure
app.js
public/
index.html
So I try browsing:
http://localhost:1337/docs/public/index.html
and I get
{
code: "ResourceNotFound",
message: "/docs/public/index.html"
}
I tried with several variations, but none of them seemed to work.
I'm sure it should be something pretty obvious I'm missing
Upvotes: 24
Views: 10049
Reputation: 61
Based on @NdeeJim's answer, to anyone wondering how to serve ALL the static resources:
server.get(/\/?.*/, restify.plugins.serveStatic({
directory: __dirname,
default: 'index.html',
match: /^((?!app.js).)*$/ // we should deny access to the application source
}));
Upvotes: 6
Reputation: 89
directory
option is a prefix for your entire path.The solution now becomes:
server.get(/\/docs\/public\/?.*/, restify.serveStatic({
directory: __dirname
}));
And then your static files will need to be in ./docs/public
.
(__dirname
is a global variable that contains the absolute path of the script you are running)
Upvotes: 8
Reputation: 203251
restify
will use the directory
option as a prefix for the entire route path. In your case, it will look for ./public/docs/public/index.html
.
Upvotes: 20