Сбой при развертывании следующего приложения в Azure из-за необходимости переустановки node_modules

#azure #azure-devops #azure-web-app-service #azure-pipelines #next.js

#azure #azure-devops #azure-web-app-service #azure-конвейеры #next.js

Вопрос:

Я создаю сборку в Azure pipelines и копирую node_modules, а также папку «out», package.json, package-lock.json, next.config.js и .следующая папка. Я копирую все это в каталог артефактов. Затем я заархивирую это как артефакт, а затем выполняю zip-развертывание в веб-приложении Azure App Service Linux.

Однако запуск npm start (который просто указывает на следующий запуск в package.json) не работает, поскольку он жалуется на то, что next не найден в node_modules (хотя он там)

Что мне нужно сделать, чтобы заставить его работать?

Если я загружаю zip-файл и разархивирую его локально, он также не работает, хотя все node_modules есть. Мне нужно запустить npm ci, чтобы начать работу next. Почему?

Разве я не должен просто копировать node_modules, и все должно просто работать?

Также бонусные баллы — нужно ли мне принудительно запускать next для запуска на порту 8080 в Azure? Порт 3000 по умолчанию, похоже, не работает? И в документах Azure говорится, что установка npm запускается при обнаружении package.json. Однако этого явно не происходит.

Любая помощь и информация будут высоко оценены!

Комментарии:

1. здесь так много вещей, которые вы делаете, и так много вопросов. давайте сосредоточимся на конвейерах Azure (если возможно, удалите свой бонусный балл о номерах портов и все такое, что делает ситуацию еще более запутанной). не могли бы вы опубликовать свой YAML здесь для начала? кроме того, ваш файл package.json из вашего проекта node / next js.

Ответ №1:

Если кто-либо пытается развернуть Next.js Приложения SSR для веб-приложений Azure, проблема заключается в копировании node_modules и конфигурации next.config.js

  1. Я использовал задачу копирования файла в своем файле yml. Этого недостаточно. Вы должны использовать node_modules cp -paR для своей папки артефактов.
  2. У нас нет server.js файл, но вы не можете использовать бессерверный, если не создадите server.js файл 🙂 Поэтому я изменил next.config.js на сервер, а затем все это работает без server.js досье.