Промежуточное ПО для Node
Промежуточное ПО Qwik City Node позволяет подключить Qwik City к серверу Node.js, который использует функциональность общего промежуточного ПО. Некоторые серверы Node включают:
Установка
Чтобы интегрировать адаптер node
, используйте команду add
:
- Для Express:
npm run qwik add express
- Для Fastify
npm run qwik add fastify
Сборка для производственной среды
Чтобы собрать приложение для производственной среды, используйте команду build
, эта команда автоматически запустит npm run build.server
и npm run build.client
:
npm run build
Для разработки
Чтобы развернуть приложение для разработки:
npm run serve
Развёртывание в производственной среде
Поскольку вы выбрали Node, вы находитесь в собственной среде после запуска npm run build
:
- Будет создана папка
dist
со всеми статическими файлами; - Будет создана папка
server
, включающая все файлы сервера.
Чтобы развернуть сервер, вам нужно запустить файл server/entry.[server].js
на сервере по вашему выбору, где [server]
может быть express или fastify.
Очень важно правильно настроить переменную окружения ORIGIN
, которая используется для проверки против CSRF-атак. ORIGIN должен совпадать с ORIGIN клиентского приложения.
Например, если вы планируете развернуть своё приложение на
https://example.com/app
, то вам нужно установить переменную окруженияORIGIN
наhttps://example.com
.ORIGIN=https://example.com node server/entry.express
Вы можете посмотреть как развернуть проект с помощью Docker здесь.
Защита от CSRF
По умолчанию все приложения Qwik City защищены от CSRF-атак для всех POST-, PATCH-, DELETE-отправок форм.
Эта защита включена по умолчанию, и это та причина, по которой вам необходимо установить переменную окружения ORIGIN
при развёртывании вашего приложения для производства.
Если вы хотите отключить защиту от CSRF, вы можете установить checkOrigin: false
в опциях createQwikCity()
в src/entry.preview.tsx
или src/entry.[server].tsx
:
// ...
const { router, notFound, staticFile } = createQwikCity({
render,
qwikCityPlan,
manifest,
checkOrigin: false,
});
// ...