Промежуточное ПО для Node

Промежуточное ПО Qwik City Node позволяет подключить Qwik City к серверу Node.js, который использует функциональность общего промежуточного ПО. Некоторые серверы Node включают:

Установка

Чтобы интегрировать адаптер node, используйте команду add:

npm run qwik add express
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:

entry.preview.tsx
// ...
const { router, notFound, staticFile } = createQwikCity({
  render,
  qwikCityPlan,
  manifest,
  checkOrigin: false,
});
// ...

Участники

Спасибо всем участникам, которые помогли сделать эту документацию лучше!

  • adamdbradley
  • manucorporat
  • mousaAM
  • reemardelarosa
  • mhevery
  • Craiqser
  • mrhoodz