Подтвердить что ты не робот

Статические файлы с обновлением (node.js)

У меня есть следующий код:

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"
}

Я попробовал несколько вариантов, но никто из них, похоже, не работал.

Я уверен, что это должно быть что-то довольно очевидное, я скучаю

4b9b3361

Ответ 1

restify будет использовать параметр directory в качестве префикса для всего маршрута маршрута. В вашем случае он будет искать ./public/docs/public/index.html.

Ответ 2

  • Параметр directory является префиксом для всего вашего пути.
  • Относительные пути работают некорректно в более поздних версиях Restify (я тестировал 2.6.0-3, 2.8.2-3 - и все они производят ошибку NotAuthorized)

Теперь решение становится следующим:

server.get(/\/docs\/public\/?.*/, restify.serveStatic({
    directory: __dirname
}));

И тогда ваши статические файлы должны быть в ./docs/public.
(__dirname - глобальная переменная, содержащая абсолютный путь к script, который вы используете)

Ответ 3

Основываясь на ответе @NdeeJim, всем, кому интересно, как обслуживать ВСЕ статические ресурсы:

server.get(/\/?.*/, restify.plugins.serveStatic({
            directory: __dirname,
            default: 'index.html',
            match: /^((?!app.js).)*$/   // we should deny access to the application source
     }));