Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 无法获取index.html Azure Linux Web应用程序_Reactjs_Azure_Azure Web App Service - Fatal编程技术网

Reactjs 无法获取index.html Azure Linux Web应用程序

Reactjs 无法获取index.html Azure Linux Web应用程序,reactjs,azure,azure-web-app-service,Reactjs,Azure,Azure Web App Service,我们在Microsoft Azure中创建了一个Linux Web应用程序。应用程序是用React(html和Javascript)静态编写的。 我们将代码复制到wwwroot文件夹中,但应用程序仅显示hostingstart.html,当我们尝试获取page index.html时,出现以下错误: 无法获取/index.html 我们在GitHub()中尝试了一个Azure示例,但错误是相同的。 url如下所示: 上周应用程序运行正常 我们忘了做点什么?好的,你会喜欢的。这件事今天也发生在我身

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

我们在GitHub()中尝试了一个Azure示例,但错误是相同的。 url如下所示:

上周应用程序运行正常


我们忘了做点什么?

好的,你会喜欢的。这件事今天也发生在我身上。完全一样。 我敢肯定azure团队在某个地方扳动了开关,我们跌入了一条裂缝

我在没有投票的情况下找到了这个晦涩难懂的答案,它成功了(还有一点额外的欺骗)

奖金!这也解决了我的路由器问题,我只在部署的站点(非本地)上遇到了这些问题:

信用:@stormwild:

从@stormwild的帖子中可以看到:

步骤:

  • 转到azure门户,选择应用程序服务并启动ssh
  • 在ssh终端中,通过命令行导航到/home/site/wwwroot
  • 使用以下代码在那里创建index.js:

    var express = require('express');
    
    var server = express();
    
    var options = {
    
    index: 'index.html'
    
    };
    
    server.use('/', express.static('/home/site/wwwroot', options));
    
    server.listen(process.env.PORT);
    
  • 注意:请确保运行npm安装--将express也保存在此文件夹中,否则您的应用程序服务将在启动时崩溃

  • 如果应用程序服务没有自动重启,请务必重启


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

    module.exports = {
      apps: [
        {
          script: "npx serve -s"
        }
      ]
    };
    
    这将告诉pm2在应用程序服务启动时将所有请求关联到index.html


    这里有非常有用的信息:

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

    我面临着完全相同的问题,浪费了6个小时尝试所有东西,包括这个问题最流行的答案。虽然接受的答案是一个很好的解决方法(但需要做的工作不仅仅是添加index.js文件),但还有比这更简单的方法

    你看,当你仅仅部署一个Azure Web应用程序(也叫应用程序服务)时,会发生两件事:

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

  • 它还将hostingstart.html放在home/site/wwwroot中

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

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

    转到web应用程序上的“配置”选项卡,并将以下代码添加到启动脚本:

    pm2 serve /home/site/wwwroot --no-daemon
    
    如果此web应用程序是客户端单页应用程序,并且您在路由方面遇到问题,请将--spa添加到上述命令中,如下所示:

    pm2 serve /home/site/wwwroot --no-daemon --spa
    
    这将告诉web应用程序为wwwroot文件夹提供服务。就这样

    供参考的图像:


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

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


    你能发布Azure认为你的文件结构是什么吗?@ScottCraig你是什么意思?在web应用程序中的/we下有:.mono、日志文件、站点。在“站点:部署、锁、wwwroot(包含index.html)”下,尝试将hostingstart.html重命名为old_hostingstart.html。然后,重新启动web应用程序。@RickRainey我试过了,但没有成功,总是显示hostingstart.html。Azure中的静态web应用程序似乎有所更改。谢谢!我解决了这个问题,但我需要在index.js、server.listen(process.env.port);)中添加端口;。我也在开始时做了“npm init”,在“npm install--save express”之后做了“npm start”。这种方法很有用,但我无法让pm2为盖茨比生成的所有目录和文件提供服务。盖茨比使用react SSR生成静态文件和文件夹。当使用pm2 serve/home/site/wwwroot时,SPA运行正常,但当导航(在应用程序内(非和SPA))到/dir/dir,然后点击返回按钮或刷新时,我会收到一个“对不起,请与站点管理员检查错误:EISDIR..”错误,因此它不会提供index.html以外的任何内容。如果我直接指向/dir/dir/index.html,这是可行的,我又回到了appUgh的“生态系统”,我离解决这个问题已经很近了!我正在运行.NET Core/ASP.NET Core,因此节点答案没有帮助。但至少我知道问题所在@上帝啊,你刚刚救了我一天。Thanks@phun-请尝试在startup命令的末尾添加--spa。我已经更新了我的答案。我也面临着这个问题。