Ответ 1
restify
будет использовать параметр directory
в качестве префикса для всего маршрута маршрута. В вашем случае он будет искать ./public/docs/public/index.html
.
У меня есть следующий код:
app.js
[...]
server.get(/\/docs\/public\/?.*/, restify.serveStatic({
directory: './public'
}));
server.listen(1337, function() {
console.log('%s listening at %s', server.name, server.url);
});
И у меня есть следующая файловая структура
app.js
public/
index.html
Итак, я просматриваю:
http://localhost:1337/docs/public/index.html
и я получаю
{
code: "ResourceNotFound",
message: "/docs/public/index.html"
}
Я попробовал несколько вариантов, но никто из них, похоже, не работал.
Я уверен, что это должно быть что-то довольно очевидное, я скучаю
restify
будет использовать параметр directory
в качестве префикса для всего маршрута маршрута. В вашем случае он будет искать ./public/docs/public/index.html
.
directory
является префиксом для всего вашего пути.Теперь решение становится следующим:
server.get(/\/docs\/public\/?.*/, restify.serveStatic({
directory: __dirname
}));
И тогда ваши статические файлы должны быть в ./docs/public
.
(__dirname
- глобальная переменная, содержащая абсолютный путь к script, который вы используете)
Основываясь на ответе @NdeeJim, всем, кому интересно, как обслуживать ВСЕ статические ресурсы:
server.get(/\/?.*/, restify.plugins.serveStatic({
directory: __dirname,
default: 'index.html',
match: /^((?!app.js).)*$/ // we should deny access to the application source
}));