Таймураз
Сейчас скину свой вариант отдачи статики
Таймураз
router.use('/assets/:path*', ctx => send(ctx, ctx.params.path, { root: config.dataFolder }));
A
то есть koa-send или koa-static вообще не нужен?
Таймураз
Я не помню, что мне не понравилось в готовом модуле статик, но помню, что там что-то было сделано через задницу
Таймураз
koa-send у меня используется
Таймураз
import send from 'koa-send';
Таймураз
и да, тут уже обсуждалось, пока на стороне бекэнда лучше require использовать
A
ааа вижу
Таймураз
Т.е. не делай как я)
A
да я так и делаю
A
бабелем транспайлю
Таймураз
Я тоже И это неправильно
Таймураз
Хотя с другой стороны, код красивее выглядит
Таймураз
В общем- если чистый бекэнд, лучше require. Если фронт- webpack 2 import Если бек с SSR- нужно готовить
A
спасибо
Матрос
ребят, почему такая хрень происходит?
Матрос
.catch(err => { res.json({ code: 1, 'message': `error`, 'error': `${err}`, }); })
Матрос
если я через строковый литерал пихаю ошибку - она уходит в ответ от сервера. если я просто ее интерполирую - там пустой объект вместо нее
Матрос
toJSON не помог
A
router.use('/assets/:path*', ctx => send(ctx, ctx.params.path, { root: config.dataFolder }));
а подскажи пожалуйста, config.dataFolder какой путь содержит?
Матрос
аааа, он в строку не переводил почему-то. всем спасибо)
Таймураз
а подскажи пожалуйста, config.dataFolder какой путь содержит?
полный путь к той папке, откуда хочешь дергать файлы
A
path.join(__dirname, '../build') ?
Таймураз
Мое решение адекватнее тем, что, как минимум, позволяет задать любой webpath и любую директорию, откуда дергать файлы
Таймураз
Да, это
A
так даже index.html не подтягивает
Таймураз
А, я не реализовал индексы)
Таймураз
Впилить легко Чекай ctx.params.path на '/' и отдавай index.html
Petro
Как в joi убрать параметры с пустыми строками?
A
А, я не реализовал индексы)
завелось вот так: router.get('/', async (ctx) => { await send(ctx, ctx.path, { root: path.join(__dirname, '../build/index.html') }); }); router.get('/assets/:path*', async (ctx) => { await send(ctx, ctx.path, { root: path.join(__dirname, '../build/') }); });
Margarita
Ребят, у меня тут вопрос будет, от совсем новичка ))
Margarita
В общем, у меня есть фронт сайта, на сайте есть форма
Margarita
Есть небольшой сервер на ноде, который слушает порт и который получает данные из формы
Yaroslav 🇺🇦
Маргарита, у меня тоже вопрос. Зачем вам програмирование?)
Margarita
Чего я не могу понять (я извиняюсь заранее за тупость вопроса): как мне на локальной машине запустить фронт и собственно сервер, чтобы оно все вместе заработало?))
Margarita
На данный момент я собираю фронт галпом и запускаю в браузере через браузер синк на 3000 порту
Margarita
Код будет приблизительно вот такой: https://ru.stackoverflow.com/questions/477533/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%82%D1%8C-%D0%B8-%D0%BF%D1%80%D0%B8%D0%BD%D1%8F%D1%82%D1%8C-%D1%84%D0%BE%D1%80%D0%BC%D1%83-%D0%BD%D0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80-node-js
Margarita
Свой вариант я пишу)
Таймураз
Margarita
Прикольно
Margarita
А это примерно как? xD (я вообще FE, которому по несчастливой случайности приходится написать кусок бека, а я как-то не очень умею)
Таймураз
FE?
A
front-end поди
Таймураз
А, тьфу
Yaroslav 🇺🇦
Фронт на чем написан, как обращается к серверу?
Таймураз
Да, торможу
Konstantin
зачем прокся? повесить их на разные порты и юзать
Aleksey
https://expressjs.com/en/starter/static-files.html
Margarita
Он никак не обращается к серверу, в форме есть такая штука: action="/form_handler"
Таймураз
зачем прокся? повесить их на разные порты и юзать
Если речь об https зайдет- будет веселее настраивать
Konstantin
https в локальной разработке? серьёзно?
Таймураз
Он никак не обращается к серверу, в форме есть такая штука: action="/form_handler"
можно action="<ip-address|domain>:<port><path>" оформить
Margarita
Больше у меня никакого бека нет, мне надо только отправку формы организовать
Władimir (Zae)
если на локалке то нафига nginx? че за бред? почему просто статику не отдавать по рутам?
Таймураз
https в локальной разработке? серьёзно?
А, ей же в локальной нужно тестить
Margarita
Не, у нас тупо нет бека почти, я маленький сайт для коммерческой организации пилю)
Margarita
Мне надо как-то наладить отправку формы и на этом все
Таймураз
Таймураз
localhost:3000/path/to/action
Konstantin
только не 3000, там gulp c фронтом
Margarita
Почему не 3000, браузер синк же запускает на 3000
Władimir (Zae)
там галп
Zaur
народ, как в nginx в location ~ ^/project/ { указать шаблон все пути начинающиеся на /project/ кроме тех что начинаются на /project/f/ ? что то у меня регулярками не получилось
Evgeny
сделай два локейшна
Konstantin
^[f]
Evgeny
не надо учить плохому
Zaur
я так понял в первом локейшине надо прописать proj/f и сделать так, чтобы дальше обработка не шла?
Konstantin
попросили регулярку)
Evgeny
Так надо сказать как сделать, а не как поглубже в жопу руки засунуть
Таймураз
Почему не 3000, браузер синк же запускает на 3000
Делайте по тому порту, на котором бек запускается. Я просто привел пример
Zaur
попросили регулярку)
я не просил) я сказал что я пробовал и у меня не получилось :) я не знаю как правильно
Konstantin
я не просил) я сказал что я пробовал и у меня не получилось :) я не знаю как правильно
я хз что там у тебя, но можно в эту сторону глянуть location !~ ^/project/f {all here; } location ~ ^/project/f { f here;}
Evgeny
омг.
Evgeny
location /project/f/ location /project/
Evgeny
Откуда у разработчиков любовь всё делать КАКМОЖНОСЛОЖНЕЕ
Zaur
location /project/f/ location /project/
да, я так и сделал, получилось, всем спасибо)
Konstantin
я не разраб если чо)