Я развернул простое приложение для реагирования на службу приложений Azure, и оно не запускается:
Как заставить приложение запускать index.html?
он должен просто запустить его, это правильно. что вы получаете вместо этого?
Вы используете react-router?
Если вы используете react-router, Linux-хост службы приложений Azure использует HTTP-сервер для прокси-сервера вашего кода в Интернете. Вам необходимо настроить правила перезаписи URL. Вы делаете это, потому что если у вас есть URL-адрес react-router (/about), когда пользователь обновляет страницу, HTTP-сервер попытается загрузить файл с именем /about, но эти файлы не существуют, что приведет к ошибке 404. Правила перезаписи URL изменят это поведение. Вместо этого он загрузит index.html, /about покажет правильную страницу из react-router. Вот связь к ответу.
Конечно, но приложение вообще не загружается.
Как вы развертываете? мерзавец? фтп?
Git репозиториев Azure



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы развернули веб-приложение Node Linux, документ по умолчанию будет hostingstart.html расположен в /home/site/wwwroot/.
Согласно это:
When you create a Node.js app, by default, it's going to use hostingstart.html as the default document unless you configure it to look for a different file. You can use a JavaScript file to configure your default document. Create a file called index.js in the root folder of your site
Итак, перейдите в свой ssh-терминал, перейдите к /home/site/wwwroot. Создайте там index.js со следующим кодом:
var express = require('express');
var server = express();
var options = {
index: 'index.html'
};
server.use('/', express.static('/home/site/wwwroot', options));
server.listen(process.env.PORT);
ПРИМЕЧАНИЕ: Обязательно запустите npm install --save express также в этой папке, иначе служба приложения выйдет из строя при запуске.
Перезапустите, он настроит index.html в качестве документа по умолчанию для вашего приложения.
Когда я добавляю эти экспресс-скрипты в свой существующий файл index.js и запускаю локально, я получаю сообщение об ошибке. Приложение отлично работает локально, поэтому не будет ли это конфликтов?
@Batman, я тестирую и получаю ошибку, затем устанавливаю экспресс-модуль, и он работает. Вы могли бы попробовать.$ npm install express
Я два дня безостановочно настраивал свои конвейеры CICD в az devops, и в итоге проблема заключалась в следующем: основной файл должен быть назван hostingstart.html. @Satheesh решение работал у меня.
@GeorgeChen У меня похожая проблема, и я разместил свой вопрос на stackoverflow.com/questions/71245335/…. Не могли бы вы взглянуть на это. Я работаю последние пару дней и продолжаю получать ошибку module express not found. Спасибо
Так что спасибо Берку Холланду. Самый простой - создать папку сборки, работающую
npm run build
Затем вы копируете папку сборки в место назначения и добавляете файл «ecosystem.config.js».
module.exports = {
apps: [
{
script: "npx serve -s"
}
]
};
См. эту ссылку для получения дополнительной информации: https://burkeknowswords.com/this-is-how-to-easily-deploy-a-static-site-to-azure-96c77f0301ff
Примечание. Это работает для развертывания в экземпляре службы приложений Node Linux в Azure. При таком подходе не требуется настройка маршрутизации на стороне клиента!
Для службы приложений Windows вы можете создать файл конфигурации для настройки маршрутизации на стороне клиента.
это решение позаботилось об обеих проблемах, запустив реагирующее приложение и обработав проблемы с реагирующим маршрутизатором.
Вам не нужно устанавливать экспресс и настраивать index.js, как указано в других ответах, поскольку для этого требуется изменение конфигурации, и вы не уверены, сохранит ли событие масштабирования приложения эти установки в новом экземпляре.
Простой способ - использовать pm2, поскольку он уже является частью стека. Передайте приведенную ниже команду запуска для приложения.
pm2 serve /home/site/wwwroot --no-daemon
После перезапуска он должен выбрать страницы из docroot (/home/site/wwwroot)
как пройти --proxy-config proxy.config.json с pm2?
добавьте эту команду на панель инструментов Azure > Конфигурация > Команда запуска
pm2 serve /home/site/wwwroot --no-daemon
и перезапустите свой сервер. Это исправило это для меня!
как пройти --proxy-config proxy.conf.json с pm2?
Перейдите в раздел Конфигурация Azure > Общие параметры.
build находится в корне проектаКоманда запуска: pm2 serve /home/site/wwwroot --no-daemon --spa
build находится внутри папки вашего клиента, просто добавьте путьКоманда запуска: pm2 serve /home/site/wwwroot/client/build --no-daemon --spa
Примечание:
Убедитесь, что вы используете сервер службы приложений Azure linux.
Я добавил --spa в конце, чтобы решить проблему перенаправления реагирующего маршрутизатора. Использование --spa автоматически перенаправит все запросы на index.html, а затем реагирующий маршрутизатор сделает свое волшебство.
как пройти --proxy-config proxy.conf.json с pm2?
Нет, я ничего не запускаю, разве это не то, что должна делать служба приложений, обслуживать индексные файлы по умолчанию?