---
title: "Инструкция по деплою приложения Hapi в сервисе App Platform"
---

> Полный индекс документации для ИИ-агентов: [llms.txt](https://timeweb.cloud/llms.txt).

В App Platform для Hapi-приложений доступны три рантайма: Node.js, Bun и Deno. Процесс деплоя зависит от выбранного рантайма: отличаются пакетный менеджер, команда сборки, команда запуска и файл, в котором описываются скрипты или задачи.

## Сборка приложения

Node.js

> [!NOTE]
> Пример Hapi-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-hapi).

При сборке приложения используется следующая среда:

-   Node.js: 20, 22 или 24
-   npm
-   yarn
-   PM2 (последняя версия)

Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта».

Во время сборки будут выполнены следующие команды:

```shell
apt install -y nodejs --fix-missing
npm install pm2@latest -g
npm install hapi @hapi/hapi
```

Если в проекте есть файл `package.json` и используется `yarn`, дополнительно будет выполнено:

```shell
apt remove -y cmdtest yarn
npm install --global yarn
cd /<DIRECTORY> && yarn install --check-files
```

В остальных случаях при наличии `package.json`:

```shell
cd /<DIRECTORY> && npm install
```

`<DIRECTORY>` — путь к каталогу, в котором находится `package.json`. 

Для запуска используется менеджер процессов PM2. Команда по умолчанию:

```
pm2 start --no-daemon index.js
```

Deno

> [!NOTE]
> Пример Hapi-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-hapi-deno).

При сборке приложения используется следующая среда:

-   Deno: 2.7.14, 2.7.10 или 2.6.0
    
-   пакетный менеджер `deno`
    

Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта».

По умолчанию отдельная команда сборки не требуется. App Platform запускает приложение в контейнере с Deno, поэтому команда `deno compile` для типового деплоя не используется.

Для запуска используется команда:

```bash
deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts
```

Также команду запуска можно описать через задачу:

```bash
deno task start
```

В этом случае App Platform выполнит команду `deno task start`, а Deno запустит задачу `start` из файла `deno.json`. В этой задаче укажите команду `deno run`, флаги доступа и путь к исполняемому файлу приложения. Например:

```js
"tasks": {
 "start": "deno run --allow-net --allow-env --allow-read --allow-sys --allow-ffi main.ts"
}
```

В этом примере основной файл приложения находится по пути `main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему.

### Флаги доступа

Deno требует явно указывать разрешения, которые нужны приложению:

-   `--allow-net` — сетевые запросы
-   `--allow-read` — чтение файлов
-   `--allow-write` — запись файлов
-   `--allow-env` — переменные окружения
-   `--allow-run` — запуск подпроцессов
-   `--allow-ffi` — нативные библиотеки
-   `--allow-hrtime` — высокоточный таймер
-   `--allow-sys` — системная информация, например ОС или CPU
-   `--allow-all` или `-A` — все разрешения сразу
-   `--watch` — перезапуск приложения при изменениях

Например, если приложению нужны сетевые запросы, переменные окружения и чтение файлов, используйте:

```
deno run --allow-net --allow-env --allow-read src/index.ts
```

Bun

> [!NOTE]
> Пример Hapi-приложения для деплоя можно найти на [Гитхабе](https://github.com/timeweb-cloud-apps/app-example-hapi-bun).

При сборке приложения используется следующая среда:

-   Bun
    
-   пакетный менеджер `bun`
    

Сборка приложения выполняется в корне репозитория или в директории, которую вы укажете в поле «Путь к директории проекта».

Для сборки используется команда:

```bash
bun build
```

Для запуска используется команда:

```bash
bun run start
```

App Platform запускает скрипт `start` из файла `package.json`. В этом скрипте укажите путь к исполняемому файлу приложения. Например:

```js
"scripts": {
 "start": "bun run src/main.ts"
}
```

В этом примере основной файл приложения находится по пути `src/main.ts`. Если в вашем проекте используется другой файл, укажите путь к нему.

## Устранение неполадок

### Не удается выполнить развертывание

Если с развертыванием возникают проблемы, в первую очередь проверьте лог деплоя. Вы сможете определить, в какой момент что-то пошло не так. 

Зачастую проблемы связаны с командой запуска. Проверьте, что всё в вашей среде разработки работает с `pm2`. Убедитесь, что все модули, необходимые для запуска приложения, присутствуют в файле `package.json`.

### Please add build instruction to your script section in package.json

Проблема связана с тем, что команда сборки `yarn build` обращается к файлу `package.json`, и если значение директивы `build` не указано, возникает ошибка.

Чтобы ее устранить, нужно добавить необходимые директивы в секцию `scripts` файла `package.json`. Подробнее об использовании `scripts` — [здесь](https://docs.npmjs.com/cli/v10/using-npm/scripts).

## Требования к приложению

Убедитесь, что приложение слушает `0.0.0.0`, а не `127.0.0.1`, иначе внешние подключения работать не будут.
