如何将Angular SPA(使用http-server)移植到Azure WebApp?

时间:2017-02-24 02:07:29

标签: angularjs node.js azure-web-sites

我已经使用Visual Studio Code创建了一个Angular 1.6.x应用程序,该应用程序具有bower的依赖关系。 Angular应用程序与单独的ASP.NET MVC REST / API应用程序进行数据交谈(最终使用adal-angular)。

在本地,我使用http-server使用npm start成功运行Angular应用程序:

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "start http://localhost:8080/app/index.html && http-server -a localhost -p 8080"
  },

虽然我已经能够使用持续交付机制成功地将Angular源代码获取到我在Azure上定义的应用服务(使用Web应用程序的控制台选项进行验证),但它已经成功了应用程序将如何开始并不完全明显,具体来说:

  • Azure如何知道如何进行" npm start"?如果它不是自动的,我在哪里指示这种情况发生?
  • 我如何指示我的应用程序使用process.env.PORT而不是端口8080?

假设我已经解决了这个初始问题,是否有关于Azure上http-server使用的指南?或者是否有其他推荐的方式来服务Angular SPA?

FWIW,我注意到尝试运行' npm start'从Azure控制台产生一个“ELIFECYCLE”'错误。

2 个答案:

答案 0 :(得分:0)

在将应用程序部署到Azure WebApp时,Azure将使用IIS来托管您的应用程序,并且只有端口80和443面向公众。因此,您不需要任何其他HTTP服务器来为Azure上的Web应用程序提供服务。

您可以澄清在访问您的网站时遇到的问题,因此我们可以帮助找出问题所在。

答案 1 :(得分:0)

Azure Web App模型在IIS中托管node.js / Angular应用程序,因此需要配置的web.config文件。 IIS和节点之间的魔力胶是iisnode模块:https://github.com/tjanczuk/iisnode,允许在IIS中托管node.js应用程序。

web.config文件可以指示IIS启动应用程序的app.js(或server.js)文件,该文件将包含对process.env.PORT的引用。

部署节点应用程序的一个很好的总体指南是:https://blogs.msdn.microsoft.com/laurelle/2015/12/01/how-to-deploy-a-node-js-site-into-azure-web-app-to-create-a-website/

我在设置web.config时可以找到的最佳指南和文档位于:https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config