@g00dv1n

Как правильно задать статическую папку в koa?

Есть папка public. В ней лежит вся статика.

Подключается обычно:
app.use(require('koa-static')(__dirname + '/public'));


Роуты так создаю:
const router = require('koa-router')();

router.use('/', require('./index').routes());
router.use('/lockers', require('./lockers').routes());
router.use('/decryptors', require('./decryptors').routes());
router.use('/faq',require('./faq').routes());
router.use('/about', require('./about').routes());
router.use('/contacts', require('./contacts').routes());

module.exports = router;


В app.js потом так подключаю:
// mount root routes  
app.use(router.routes());


Проблема в следующая. Есть такой роут:
const router = require('koa-router')();
const config = require('../config');
const findLocker = require('../helpers/identifier');
const fileUpload = require('../helpers/fileUpload');

router.get('/', function *(next) {
    yield this.render('pages/lockers');
});

router.get('/:id', function *(next) {
    this.body = 'Single Locker Page: [Locker With Id - ' + this.params.id + ']';
});

router.post('/', function *(next) {
    // the body isn't multipart, so busboy can't parse it
    if (!this.request.is('multipart/*')) return yield next;

    let uploadPath = yield fileUpload(config.uploadDir, this, ['.html', '.txt']);
    this.body = yield findLocker(uploadPath);
});

module.exports = router;


Когда юзается корневой роут /lockers . То все ок стили беруться по пути : localhost/stylesheet/blablabla.css
Но когда юзается роут /lockers/:id , то берется по пути localhost/stylesheet/lockers/blablabla.css
Стиили подключается обычно.
<link rel="stylesheet" href="stylesheets/style.css">

Как это пофиксить?
  • Вопрос задан
  • 488 просмотров
Решения вопроса 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Лучше вообще не раздавать статику через node, а использовать например nginx.
Все равно же не будет у вас голый node наружу стоять.

UPD
Все правильно
Для /lockers css будет указывать на localhost/stylesheet/blablabla.css
Для /lockers/<что-то еще> на localhost/lockers/stylesheet/blablabla.css
так как опустились на уровень ниже, но css ищем относительно текущего пути.

Используйте абсолютные пути относительно корня.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы