Node.js

Как перенести Node.js-проект в сеть без интернета

Короткий ответ: перед переносом нужно подготовить не только исходный код, но и зависимости. В изолированной сети npm install не сможет скачать пакеты из интернета, поэтому заранее сохраните package-lock.json, подготовьте архив node_modules или локальный npm-cache, а затем проверьте запуск проекта уже внутри закрытой сети

Такой запрос обычно возникает в корпоративной или учебной среде: проект работает на localhost, но целевая машина не имеет доступа к интернету. Здесь нельзя просто скопировать server.js и ждать, что Express, pg, dotenv или другие пакеты “как-то подтянутся”

Что должно быть в проекте

Минимально нужны

  • исходные файлы проекта
  • package.json
  • package-lock.json
  • понятная команда npm start
  • конфигурация переменных окружения
  • подготовленные зависимости

Проверьте локально

npm install
npm start

Если локально проект не запускается из чистого состояния, в закрытой сети он тоже не оживет

Вариант 1: перенести node_modules архивом

Самый прямой учебный вариант — собрать зависимости на машине с интернетом, затем перенести проект вместе с node_modules

npm ci

После этого архивируйте проект

tar -czf node-project.tar.gz project/

На целевой машине распакуйте и запустите

npm start

Минус подхода: node_modules может быть большим, а зависимости с нативными модулями могут зависеть от операционной системы и архитектуры. Архив, собранный на macOS, может не подойти для Linux-сервера

Вариант 2: подготовить зависимости под такую же систему

Если целевая машина Linux, лучше собирать зависимости тоже на Linux с похожей версией Node.js

Проверьте версии

node -v
npm -v

Соберите зависимости

npm ci

Потом переносите проект. Такой подход снижает риск, что нативные зависимости не запустятся после копирования

Вариант 3: локальный npm-cache или внутренний registry

Для серьезной инфраструктуры лучше не таскать node_modules руками, а использовать внутренний npm registry или заранее подготовленный cache. Тогда закрытая сеть получает зависимости из внутреннего источника

Это уже администраторский уровень, но принцип простой: если у npm нет интернета, у него должен быть другой источник пакетов

Не забудьте про версию Node.js

Проект может зависеть не только от пакетов, но и от версии Node.js. Зафиксируйте ее в .nvmrc или в документации проекта

20

На целевой машине проверьте

node -v

Если версия отличается, проект может упасть даже при перенесенных зависимостях

Переменные окружения

Не переносите .env с секретами без контроля. Для закрытой сети лучше подготовить шаблон

DATABASE_URL=
PORT=3000
JWT_SECRET=

А реальные значения внести уже на целевой машине

Проверка после переноса

Запустите проект

npm start

Проверьте health route

http://localhost:3000/health

Если проект должен быть доступен другим машинам в сети, убедитесь, что сервер слушает нужный интерфейс и firewall не блокирует порт

Мини-практика

Создайте маленький Express-проект, установите express, удалите интернет-подключение или временно проверьте в среде без доступа к npm, затем попробуйте запустить проект с заранее подготовленным node_modules

Так вы увидите главный риск: исходного кода недостаточно, если зависимости не подготовлены

Частые ошибки

Скопировали только server.js Express и другие пакеты не входят в Node.js. Их нужно переносить или устанавливать из доступного источника

Собрали node_modules на другой системе Нативные зависимости могут не запуститься. Старайтесь собирать под такую же ОС и архитектуру

Забыли package-lock.json Без lock-файла сложнее воспроизвести те же версии зависимостей

В закрытой сети нет нужной версии Node.js Переносите или устанавливайте Node.js заранее, а не только файлы проекта

Что почитать дальше по Node.js

Если нужен общий маршрут по теме, откройте рубрику Node.js. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x