无法获取index.html Azure Linux Web App

时间:2019-01-17 13:21:04

标签: reactjs azure azure-web-app-service

我们在Microsoft Azure中创建了一个Linux Web App。该应用程序是用React(HTML和Javascript)静态编写的。 我们将代码复制到了wwwroot文件夹中,但是该应用程序仅显示hostingstart.html,并且当我们尝试获取页面index.html时出现以下错误: Cannot GET /index.html

我们尝试在GitHub(https://github.com/Azure-Samples/html-docs-hello-world)中使用Azure样本,但错误是相同的。 网址是这样的:https://consoleadmin.azurewebsites.net/index.html

上周应用程序正常运行。

我们忘了做什么?

4 个答案:

答案 0 :(得分:24)

2020年5月-您无需在任何地方添加任何javascript文件或配置文件。让我解释一下。

我正面临着同样的问题,花了6个小时尝试一切,包括对这个问题的最受欢迎答案。虽然可以接受的答案是一个不错的解决方法(但不仅需要添加index.js文件,还需要做更多的工作),但是有比这更简单的方法。

您看到,仅部署Azure Web App(或也称为App Service)时,会发生两件事:

  1. 默认情况下,Web应用程序指向opt / startup / hostingstart.html

  2. 它还将hosthoststart.html放在home / site / wwwroot

在部署代码时,它将替换home / site / wwwroot中的hostingstart.html,但应用程序仍指向opt / startup / hostingstart.html。如果要验证这一点,请尝试删除opt / startup / hostingstart.html文件,然后您的网络应用将抛出“ CANNOT GET /”错误。

那么如何更改默认指针?它比看起来简单:

转到网络应用上的“配置”标签,然后将以下代码添加到启动脚本中:

pm2 serve /home/site/wwwroot --no-daemon

如果此Web应用程序是客户端单页应用程序,并且您在路由方面遇到问题,则将--spa添加到上述命令中,如下所示:

pm2 serve /home/site/wwwroot --no-daemon --spa

这将告诉Web应用提供wwwroot文件夹。就是这样。

图片供参考: Screenshot explaination

PS:如果仅设置启动脚本而不部署代码,它将仍然显示hostingstart.html,因为默认情况下该文件位于wwwroot文件夹中。

答案 1 :(得分:3)

好吧,你会喜欢这个。今天我也发生了这种情况。完全一样。  我很确定,天青团队在某个地方拨了一个开关,我们就跌入了裂缝。

我发现这个含糊不清的答案,没有投票,而且成功了(花了一些额外的精力)

奖励!这也解决了我仅在已部署站点(而非本地站点)上遇到的路由器问题:

信用:@stormwild:http://tempuri.org/:GetAllProductResult

从@stormwild的帖子中看到: http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies

步骤:

  1. 转到您的Azure门户,选择您的应用程序服务并启动ssh
  2. Default documents not serving on node web app hosted on Azure
  3. 在ssh终端中,通过命令行导航到/ home / site / wwwroot
  4. 使用以下代码在其中创建index.js:

    var express = require('express');

    var server = express();

    var options = {

    index:'index.html'

    };

    server.use('/',express.static('/ home / site / wwwroot',options));

  5. 注意:确保在此文件夹中也运行npm install --save express,否则您的应用程序服务将在启动时崩溃

  6. 如果没有自动重启应用程序服务,请确保

答案 2 :(得分:2)

另一种解决方案是在index.html文件旁边添加一个名为 ecoysystem.config.js 的文件。

module.exports = {
  apps: [
    {
      script: "npx serve -s"
    }
  ]
};

这将告诉pm2在您的应用程序服务启动时将所有请求关联到index.html。

此处非常有用的信息:https://burkeholland.github.io/posts/static-site-azure/

答案 3 :(得分:0)

解决方法,我将 webapp 堆栈更改为 PHP 7

enter image description here