не удается запустить веб-API nodejs, размещенный в Azure

Изучил nodejs и начал создавать свой собственный API для отдыха, используя restify.

Я создал очень простой файл server.js, который содержит в основном пример запуска типа hello world, например:

server.post('/api/messages', servicemanager.verifyFramework(), servicemanager.listen());

server.get(/.*/, restify.serveStatic({
    'directory': '.',
    'default': 'index.html'
}));

server.listen(process.env.port || 3978, function () {
    console.log('%s listening to %s', server.name, server.url); 
});

который отлично работает локально. Я не могу нажать http://localhost:3978 и могу протестировать вызовы API, просто вызвав http://localhost:3978/api/messages.

Я развернул свой код в битбакете и теперь хочу разместить эти API в Azure с помощью App Services.

Моя структура проекта выглядит так:

/topfolder
  -/myproject
     -/node_modules
       -/node_modules...
     server.js
     package.json
     index.html

Когда я настраиваю новую службу приложений в Azure, я вижу, что развертывание получает код от BB, но служба никогда не отвечает на мои запросы.

Я настроил домашний путь приложения: /site/wwwroot/topfolder/myproject, и я вижу index.html при переходе на http://myproject.azurewebsites.net, так что это хорошо.

Я действительно получаю ошибку 404: The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

Есть куча примеров того, как настроить непрерывное развертывание с помощью битбакета, и по большей части все они работают, но мой файл server.js, похоже, не вызывается и не запускается.

Как я могу отладить то, что здесь происходит?

Используется ли файл packages.json в этом сценарии Azure?

Спасибо.


person Mark    schedule 22.05.2016    source источник
comment
Если вы зайдете по FTP на свой лазурный веб-сайт, где-то есть журнал. Там не так много каталогов, в которых можно покопаться, но в одном из файлов над вашим проектом в структуре каталогов, я уверен, есть файл журнала, который должен содержать любые выходные данные консоли, зарегистрированные в вашем приложении.   -  person Chev    schedule 22.05.2016
comment
Какой URL-адрес вы используете для доступа к вашему размещенному API?   -  person David Makogon    schedule 22.05.2016
comment
@Chev, спасибо, это консоль отладки, я осмотрелся, но ничего не выскакивает. Любые подсказки?   -  person Mark    schedule 22.05.2016
comment
@DavidMakogon я нажимаю: mysite.azurewebsites.net/api/messages в качестве HTTP-запроса на публикацию. Локально я нажимаю localhost:3978/api/messages, что работает (когда я убеждаюсь, что узел работает конечно)   -  person Mark    schedule 22.05.2016


Ответы (1)


Путь к корневому каталогу приложения, размещенного в службах приложений Azure, — D:\home\site\wwwroot. А что касается приложения nodejs, структура Azure найдет входной скрипт в корневом каталоге, например server.js. И запросы обрабатываются через web.config в корневом каталоге. Если отсутствует файл server.js или web,config, вы получите ошибку 404.

Вы можете попробовать изменить структуру вашего приложения, например:

-/node_modules
  -/node_modules...
server.js
package.json
index.html

Затем вы развертываете свое приложение в Azure через GIT или из BB, задача развертывания Azure выполнит команду npm install и сгенерирует файл web.config в корневом каталоге.

Любая дальнейшая проблема, пожалуйста, не стесняйтесь, дайте мне знать.

person Gary Liu    schedule 23.05.2016
comment
Похоже, вам просто нужно было иметь эту структуру тогда, а сейчас это сработало для меня, хотя это было огромной болью. Спасибо Гэри. - person Mark; 24.05.2016