Узел службы приложений Azure Как он запускается? - PullRequest
0 голосов
/ 06 июля 2018

У меня есть приложение Angular Universal, которое я развертываю в службе приложений Azure (Windows).

Когда приложение запускается локально на моем ПК с Windows 10, оно работает нормально, но в облаке кажется, что process.cwd() отличается от того, когда я запускаю его локально. Это приводит к тому, что Express.js ищет неправильные файлы для просмотра некоторых файлов.

Процесс pwc должен основываться на том, как я выполнял узел, в моем случае в моем package.json есть стартовый скрипт, который выполняет "node dist/server.js". Но я могу удалить этот скрипт, и Azure все равно запустит мое приложение. Поэтому я думаю, что корень моей проблемы с pwc в том, как Azure запускает мое приложение для узлов.

К сожалению, Microsoft считает, что некоторые фрагменты кода и пара видеороликов Джона Папы - достаточно хорошая документация для разработчиков, чтобы решить проблемы.

Вопросы

  1. Существует ли документация, объясняющая какую-либо конфигурацию или соглашения, которые служба приложений использует для запуска приложения моего узла? Где это

  2. Учитывая сценарий "start": "node dist/server.js", почему process.cwd() будет отличаться на моем локальном хосте от службы приложений Azure? Структура файла одинакова в обоих местах.

const DIST_FOLDER = join(process.cwd(), 'dist');

app.set('views', join(DIST_FOLDER, 'browser'));

Error: Failed to lookup view "index" in views directory "D:\home\site\wwwroot\dist\dist\browser"

  • корень
  • package.json
    • расстояние
      • server.js
      • браузер (клиентское приложение)
      • сервер (серверное приложение)

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018
  1. Документация : не исчерпывающее руководство, но это то, что я нашел полезным на форумах MSDN :

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

...

Для приложения node.js, работающего в Azure Web Apps, требуется файл server.js или app.js в качестве входа в корневой каталог с файлом web.config для управления iis

  1. Рабочий каталог : Когда web.config и iisnode используются для запуска server.js, правила переписывают каталог так, чтобы он указывал, где находится server.js. Вот почему он не может найти подпапку «dist».

Мне пришлось изменить строчку выше, чтобы она работала в Azure:

const DIST_FOLDER = process.cwd();

Еще одна вещь, которую я нашел важной, - это установить правильную версию узла для вашей службы приложений, используя WEBSITE_NODE_DEFAULT_VERSION в настройках приложения. Вот немного больше информации об этом из блога на MDSN - NodeJs и версий NPM в Azure App Services

0 голосов
/ 01 ноября 2018

Если кто-то еще окажется здесь, поместите это в файл server.ts для работы как локально, так и на Azure

import * as fs from 'fs';
const distFolderExists = fs.existsSync(join(process.cwd(), 'dist'));
const DIST_FOLDER = distFolderExists ? join(process.cwd(), 'dist') : process.cwd();

большое спасибо KayS за ответ - очень полезно.

0 голосов
/ 07 июля 2018

Так как я привык размещать Node-приложения в Linux, это полностью смутило меня. Ответ ...

см. Web.config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...