已将angular应用程序部署到Azure web应用程序-但显示默认Azure页面

已将angular应用程序部署到Azure web应用程序-但显示默认Azure页面,angular,azure,azure-devops,azure-webapps,Angular,Azure,Azure Devops,Azure Webapps,我在Azure中创建了一个Web应用程序来承载一个角度应用程序。 我选择了以下运行时: 但我的本地设置详细信息: 节点版本:v13.0.1 角度版本:8.2.11 我使用Anguler cli创建应用程序,然后运行ng build--prod创建dist。 然后我尝试了以下方法将Angular应用程序部署到Web应用程序: 1.在VS代码中使用Azure应用程序服务扩展 2.使用FileZilla进行FTP,并从Web应用程序的部署中心获取FTP详细信息 但当我浏览url时: 我在angula

我在Azure中创建了一个Web应用程序来承载一个角度应用程序。 我选择了以下运行时:

但我的本地设置详细信息:

  • 节点版本:v13.0.1
  • 角度版本:8.2.11
  • 我使用Anguler cli创建应用程序,然后运行ng build--prod创建dist。 然后我尝试了以下方法将Angular应用程序部署到Web应用程序: 1.在VS代码中使用Azure应用程序服务扩展 2.使用FileZilla进行FTP,并从Web应用程序的部署中心获取FTP详细信息

    但当我浏览url时: 我在angular应用程序中看到了以下页面,但没有看到我的页面

    知道为什么会这样吗?为什么我没有看到我的页面

    感谢您在advanced中的帮助

    您需要一个Web服务器来运行您的网站。 默认情况下,节点运行时堆栈没有运行的Web服务器,因此无法显示任何内容

    您可以使用一些node.js web服务器(express.js)托管您的网站,但这需要额外的npm包和配置。 更好的选择是将操作系统切换到windows。然后,IIS将用于托管部署到应用程序服务的网站。查看IIS中托管的angular所需的重写规则配置

    我通过以下方式解决了此问题:

  • 通过选择运行时堆栈作为ASP.NET V4.7并选择操作系统作为Windows来创建Web应用程序
  • 使用Azure DevOps部署angular应用程序

  • 步骤在这篇博文中:

    有另一种方法来解决这个问题。 背景故事:网络应用 操作系统:Linux,运行时堆栈:Node.js

    你可以从这里在集装箱上签字。

    运行pm2列表
    
    已经有一个名为“默认静态stie”的静态站点。它位于“/opt/startup”中。
    然后运行
    pm2 show default static stie
    ,然后您可以浏览相关文件夹以了解更多详细信息

    正如控制台中的消息所建议的,“不保留'/home'之外的任何数据。”

    因此,您需要做的只是将现有项目复制到“/home”文件夹中。对“startup.sh”和“default static site.js”进行一些修改

    startup.sh:

    #!/bin/sh
    
    #turn off the default static site
    pm2 stop default-static-site
    
    # Enter the source directory to make sure the script runs where the user 
     expects
    cd "/home/site/wwwroot"
    
    export NODE_PATH=$(npm root --quiet -g):$NODE_PATH
    if [ -z "$PORT" ]; then
                export PORT=8080
    fi
    
    pm2 start -n my-static-site  --no-daemon /home/my-static-site/default-static-site.js
    
    default-static-site.js:

    server.use('/', express.static('/home/site/wwwroot', options));
    
    顺便说一句,在上述行之前添加一个代码段:

    server.all('/*', function(req, res, next) {
    // Just send the index.html for other files to support HTML5Mode
    res.sendFile('index.html', { root: '/home/site/wwwroot' });
    
    }))

    最后:

    在这里放置一个启动命令,以引用“/home/my static site/startup.sh”

    所以,一切都完成了。

    最简单的解决方案:

    转到应用程序服务>配置

    在配置下,选择选项卡->常规设置

    在“启动命令”字段中,输入以下命令:

    pm2服务/home/site/wwwroot——无守护进程——spa

    现在,您的应用程序应该能够显示,而不是默认页面

    应用程序未运行的原因是它在Linux上运行,而Linux没有IIS服务器来处理节点应用程序的路由(它遵循这些路线)


    看这段视频,这家伙应该得到所有的荣誉(如果这救了你的话,就像他的视频一样):

    对我有效的是让Node 12 runtime+在@LouisDev22给出的常规设置中设置启动脚本(非常感谢):

    然后在应用程序设置中将
    SCM\u TARGET\u PATH
    变量设置为
    /home/site/wwwroot
    ,仅当您首次使用其他运行时运行应用程序服务时才需要此变量

    PS1:您可以在应用程序服务配置菜单中找到常规和应用程序设置


    PS2:Bravo Azure

    您是否通过以下答案解决了问题?如果他们为你工作,你可以,这对其他社区成员阅读这篇文章是有益的。这拯救了我的一天。非常感谢@LuisDev99I在尝试“ng serve”时,弄不明白为什么即使软件包在站点/wwwroot中也没有发布。非常感谢应用程序在启动时崩溃,pm2:未找到
    pm2 serve /home/site/wwwroot --no-daemon --spa