В настоящее время я пытаюсь развернуть веб-приложение Windows в Azure. Я использую Nodejs, и, в частности, это приложение реакции next.js с машинописным текстом. У меня возникают ошибки при развертывании в Azure.
Я использую конвейер действий github для сборки и развертывания приложения, и при его запуске npm install
и npm build
работают без проблем. Проблема заключается в том, что когда для параметра приложения SCM_DO_BUILD_DURING_DEPLOYMENT
установлено значение true
, я получаю сообщение об ошибке на этапе развертывания в Azure, поскольку оно перестраивает приложение в веб-приложении. Ошибка:
error - ESLint must be installed in order to run during builds: npm install --save-dev eslint
Я установил SCM_DO_BUILD_DURING_DEPLOYMENT
на true
, потому что я читал ранее, что узел имеет проблемы с веб-приложениями Azure, связывающими пакеты узла, поэтому вам нужно запустить сборку на сервере.
Проблема в том, что когда я запускаю сборку во время развертывания, я читаю, что запускается команда npm install --production
. Когда это запускается, он правильно устанавливает мои пакеты, но затем, когда он выполняет шаг сборки postinstall
, происходит сбой с указанной выше ошибкой eslint.
Когда для SCM_DO_BUILD_DURING_DEPLOYMENT
установлено значение false
, развертывание в моем конвейере проходит успешно, но приложение не работает.
В приложении Windows я не могу видеть журналы ошибок, но ранее, когда я развертывал это как приложение Linux, оно показывало отсутствующие пакеты из-за проблемы с привязкой node_modules, поэтому я думаю, что это та же проблема в окнах. (Чтобы просмотреть журналы приложений, я перешел к Diagnose and Solve Problems -> Application Logs
, и в Windows у меня нет тех же параметров, все, что я нажимаю, просто показывает мне графики, поэтому я не уверен, как проверить, что это та же проблема, но, похоже, это так.
TLDR
Как исправить ошибку eslint и успешно развернуть приложение next.js? Вот мой package.json:
пакет.json
"scripts": {
"dev": "node server.js",
"build": "next build",
"start": "node server.js",
"lint": "next lint",
"postinstall": "next build"
},
Я просто собираюсь неправильно развернуть приложение next.js в веб-приложении Azure? Любое руководство приветствуется. Я потратил несколько дней, пытаясь заставить это работать на этом этапе. Должен ли я создавать собственный сценарий развертывания? Мне не удалось найти документацию для этого с узлом, но я вижу в выводе ошибки, что работает веб-приложение.
azure site deploymentscript -y --no-dot-deployment -r "C:\local\Temp\zipdeploy\extracted" -o "C:\home\site\deployments\tools" --node --sitePath "C:\local\Temp\zipdeploy\extracted"'.
так есть способ изменить это?
когда вы прямо говорите в YAML, что вы имеете в виду? Я устанавливаю веб-приложение Windows, поэтому у меня есть собственный скрипт сборки, server.js, web.config и файл package.json.
попробуйте игнорировать eslint в следующем js, обратитесь к этому nextjs.org/docs/api-reference/next.config.js/ignoring-eslint
Эту ошибку можно обойти, и это будет полное игнорирование eslint
.
Этого можно добиться, настроив next.config.js
, добавив опцию ignoreDuringBuilds
под тегом eslint
.
next.config.js
должен выглядеть так:
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
swcMinify: true,
eslint:{
ignoreDuringBuilds : true,
},
}
module.exports = nextConfig
Здесь я развернул код Nextjs Boilerplate с указанным выше файлом next.config.js.
попробуйте установить eslint явно в yaml во время развертывания, или вы можете игнорировать eslint в nextjs