Intereting Posts
Может ли несколько fs.write добавить к одному файлу гарантировать порядок выполнения? Как я могу сгенерировать сервер AddressSpace из файла XML-узлов? assembly базовой сетки при загрузке страницы API Loopback включает фильтры, которые не работают должным образом Как gunzip chunk-by-chunk в node.js? AWS API Gateway – эластичный бобовый стебель – ограниченный доступ resize изображения с помощью nodeJs imageMagick Node.js + Mongoose.js Как получить сумму заказов, размещенных через месяц или неделю? Ajax, чтобы обновить частичный вид с помощью express и JQuery? Как подключить приложение node.js с помощью скрипта python? Расширение встроенной модели пользователя для поддержки большего количества свойств и поведения в loopback как добавить крючки после обновления пакета Почему мое решение так медленно и как я могу улучшить производительность запроса? Начало работы с Node.js, angular.js и MongoDB, моделирование отношений и другие подсказки по нарастанию Как загрузить сокет io event listener из config?

Запуск Node.js в Azure Web App

Я пытаюсь запустить очень простой сервер node.js на Azure Web Appp, чтобы обслуживать одностраничное приложение. Сервер будет обслуживать статические страницы и всегда будет «index.html» сервера для запросов страницы, поскольку вся маршрутизация выполняется на стороне клиента.

Все работает абсолютно идеально локально, но при развертывании на Azure любые запросы на страницу приводят к тому, что «ресурс, который вы ищете, был удален …», что говорит о том, что сервер узла не попадает.

Я использую Koa как сервер, и server.js здесь;

var Koa = require('koa'); var convert = require('koa-convert'); var helmet = require('koa-helmet'); var historyApiFallback = require('koa-connect-history-api-fallback'); var serve = require('koa-static'); var app = new Koa(); // This rewrites all routes requests to the root /index.html file // (ignoring file requests). If you want to implement isomorphic // rendering, you'll want to remove this middleware. app.use(convert(historyApiFallback({ verbose: false }))); // Serving ~/dist by default. Ideally these files should be served by // the web server and not the app server, but this helps to demo the // server in production. app.use(convert(serve(__dirname))); app.use(helmet()); var server = app.listen(3000);var Koa = require('koa'); var convert = require('koa-convert'); var helmet = require('koa-helmet'); var historyApiFallback = require('koa-connect-history-api-fallback'); var serve = require('koa-static'); var app = new Koa(); // This rewrites all routes requests to the root /index.html file // (ignoring file requests). If you want to implement isomorphic // rendering, you'll want to remove this middleware. app.use(convert(historyApiFallback({ verbose: false }))); // Serving ~/dist by default. Ideally these files should be served by // the web server and not the app server, but this helps to demo the // server in production. app.use(convert(serve(__dirname))); app.use(helmet()); var server = app.listen(3000); 

Я включил package.json в развертывание, так как в какой-то документации предполагалось, что требуемые пакеты узлов будут автоматически установлены (Koa и т. Д.), Но похоже, что это не сработало.

Есть идеи?

Веб-сайты Windows Azure используют IISNode для размещения процесса узла внутри IIS. На вашем узле на самом деле предоставляется Именованная труба, которая получает входящие запросы, а не порт TCP, который вы использовали бы при локальном хостинге или хостинге. Даже если вы можете открыть TCP-порт, веб-сайты Azure действительно предназначены только для традиционных веб-сайтов и не имеют возможности открывать порты для внешнего мира.

Итак, во-первых, вам нужно изменить порт в вашем коде, например: var port = process.env.PORT||3000; //which you can run both on Azure or local var server = app.listen(process.env.PORT||3000); var port = process.env.PORT||3000; //which you can run both on Azure or local var server = app.listen(process.env.PORT||3000);

И в моем тесте есть несколько дополнительных конфигураций, которые нам нужно настроить для удаления ошибок из приложения, чтобы он запускался в Azure Web App.

Похоже, что эта проблема будет nodeProcessCommandLine с помощью https://github.com/alexmingoia/koa-router/issues/177, непосредственно запускающей приложения koa на Azure, поэтому нам нужно настроить nodeProcessCommandLine :

создайте файл с именем iisnode.yml с содержимым: nodeProcessCommandLine:"%programfiles%\nodejs\%WEBSITE_NODE_DEFAULT_VERSION%\node.exe" --harmony-generators настройки WEBSITE_NODE_DEFAULT_VERSION относятся к значению, установленному в настройках приложения в настройке на вкладке портала портала вашего сайта.

В качестве приложения node.js, запущенного в Azure Web Apps, требуется файл server.js или app.js в качестве входа в корневой каталог с файлом web.config для управления iis (он будет автоматически создан, если вы развертываете через git или постройте сервер приложений с помощью шаблона node.js). НАПРИМЕР

                               

Таким образом, вы можете поместить свои файлы SPA в .azurewebsites.net/index.html папку в корневой каталог, например, ваш вход в SPA – index.html , когда вы посещаете .azurewebsites.net/index.html он перепишет файл “/public/index.html” ,

Кроме того, вы можете использовать VSO для отладки вашего приложения на Azure онлайн, обратитесь к Visual Studio 2015 и Microsoft Azure, синхронизирующим файлы, Server / Local для более подробной информации.

Я вижу дублированный код в вашем коде выше. Удалите код после var server = app.listen(3000); затем выполните действия, описанные в статье https://azure.microsoft.com/en-us/documentation/articles/web-sites-nodejs-develop-deploy-mac, чтобы завершить depoly ваш KOA до лазурного.