Skip to content

xzdwq/directus-nestjs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Требования

Node: >=16.0.0
NPM: >=7.0.0
Lerna: npm i -g lerna

Установка

  1. Клонируем проект:
    git clone <url> -b <branch>
  2. Устанавливаем зависимости (из корня проекта):
    npm i
  3. Собираем проект (из корня проекта, необходимо т.к. некоторые модули работают только из сборки):
    npm run build

В случае ошибки при сборке вида: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory:
Это значит что Node не хватает выделенной памяти на выполнение процесса.
Посмотреть текущую выделенную память можно командой: node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))' (Мб).
Для решения этой проблемы была создана команда npm run build:memory (для Windows) и build:memory-unix (для Unix систем), команда выделяет разово на выполнение следующей операции указанную память, чего должно хватить на сборку. В случае нехватки можно увеличить:

NODE_OPTIONS="--max-old-space-size=5120" # Increase to 5 GB
NODE_OPTIONS="--max-old-space-size=6144" # Increase to 6 GB
NODE_OPTIONS="--max-old-space-size=7168" # Increase to 7 GB
NODE_OPTIONS="--max-old-space-size=8192" # Increase to 8 GB

В случае пустой, вновь созданной БД:

  1. Инициализируем БД:
    npm run cli bootstrap
  2. Заускаем миграции (предварительно необходимо переместить конфиг .env с подключениями к БД в корень, после миграций его можно удалить и оставить только в api/):
    npx directus database migrate:latest - запуск последних актуальных миграций.

Дополнительные команды:

  • lerna bootstrap - установка всех зависимостей в связанных проектах/модулях (если нужен отделно работающий модуль).
  • npx lerna clean -y - удаление всех зависимостей в связанных проектах/модулях (удобное удаление node_modules, кроме корня).
  • npx directus bootstrap - инициализация БД директуса (только если ставим директус впервые на пустую БД).

Запуск для разработки

  • Запуск без lerna, для разработки api, app, nest-api.
    Из корня проекта: npm run go
    Запустится api, nest-api и app, приложение будет доступно по адресу: http://localhost:8080/

  • Запуск через lerna - полный запуск всех модулей проекта (из под Windows через консоль и привычное Ctrl+C полная остановка процессов ноды поднятых через лерну невозможна, после оставки через консоль зайдите в Диспетчер задач -> Подробности, найдите все процессы ноды и остановите их)
    Из корня проекта: npm run dev, приложение будет доступно по адресу: http://localhost:8080/

Особенности

  • Nest API и API имеют общий .env файл конфигураций, который должен распологаться в /api/.env.

  • Раздел packages/schema, который отвечает, в том числе, за идентификацию коллекций не только из схемы public в версии 9.8.0 (и даже в еще более ранней версии) перестал ожидаемым образом работать. Изначально ожидалось, что модуль будет брать переменную среды DB_SEARCH_PATH="array:public,ib,pim" и считывать указанные схемы, но он этого не делает и возвращает пустой набор. Для корректной работы с модулем из версии 9.8.0 необходимо удалить данную переменную или оставить одну единственную схему public, но тогда все остальные коллекции в схемах, помимо public, перестанут распознаваться как коллекции.
    Поэтому модуль packages/schema в версии 9.8.0 был заменен на такой же модуль из версии 9.0.0 (с некоторыми доработками) где подобных проблем не наблюдалось.

  • В проект интегрирован UI Framework Quasar, который своими классами перебивает некоторые базовые классы проекта, поэтому был создан override классов для quasar. Расположение: app/src/styles/quasar/override. Для 2-й версии Quasar необходим "sass": "1.32.11" (в случае ошибок sass после обновления версии директуса необходимо понизить версию sass до указанной).

  • В новых версиях Directus добавился редирект на /admin/, поэтому пришлось его убрать и добавить привычный /api/ ко всем запросам обращения.
    Были затронуты:

    • app/vite.config.js - изменено проксирование на api;
    • app/src/api.ts - добавлен префикс api/ в инстанс axios;
    • api/src/app.ts - добавлен префикс /api/ во всем app.use('/api/url');
    • app/src/router.ts - удален префикс admin в history: createWebHistory(getRootPath());
    • app/src/utils/get-root-path.ts - return '/';
    • app/src/utils/get-root-path.ts - добавлениа функция getAssetsPath(), которая возвращает путь до статики с препиской api/ и найдены во всем проекте все обращения по пути getRootPath() + assets/ и заенены на getAssetsPath();

About

Directus 9.8.0, Nestjs, Quasar, Tailwind, PG

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

  •  
  •  

Packages

No packages published