sxfad / react-admin

基于 Ant Design React 的管理系统架构
https://sxfad.github.io/react-admin
609 stars 170 forks source link

部署到服务器后,iframe嵌套的页面打不开,而且控制台报错! #113

Closed goudanz closed 2 years ago

goudanz commented 2 years ago

同一个外部的地址;本地是没问题的;

image

线上会报错:

image

而且我在iframe/index.jsx中打了日志:

image

这个日志也没有输出!

zkboys commented 2 years ago

跟iframe没关系,查一查服务端 ,看看这个文件是否存在,像是服务端的静态文件缓存设置有问题,导致前端没获取到最新部署的文件。你可以换一个浏览器,或者清除浏览器缓存试试,如果好了,就是缓存的问题,服务端没设置好。 image

goudanz commented 2 years ago

跟iframe没关系,查一查服务端 ,看看这个文件是否存在,像是服务端的静态文件缓存设置有问题,导致前端没获取到最新部署的文件。你可以换一个浏览器,或者清除浏览器缓存试试,如果好了,就是缓存的问题,服务端没设置好。 image

明白。我试试看

goudanz commented 2 years ago

@zkboys 大佬,我在新做的另外两个功能里也碰到这个问题了,是用props.history.push(`/report/_/show/${id}`)这种方式跳的!

然后其中这个report可以打开,页面可以正常显示:

image

但是在这里如果 F5一下,就会崩溃:

image

另一个页面是直接就进不去。和iframe一样。页面都显示不了,

然后我试了各种办法,

  1. 然后也取消了二级的path写法,也不行!

  2. 还有跳转方式用了window.location.href 也不行!

  3. 用了react自带的Link:import {Link} from 'react-router-dom'; 也不行!

  4. 我还手动把服务器中前端文件夹的内容rm掉。然后用ftp直接上传,也不行~ image

最后,我甚至把被跳转的页面改成如下:

import React from 'react';

export const PAGE_ROUTE = '/plan/:id';
export default (props => {
    return (
        <>
            hello world
        </>
    );
});

还是无法跳转!呼~ 我在想,要不要把这几个功能直接改成弹窗算了。然后弹窗撑满屏幕。。。。。。。

zkboys commented 2 years ago

你线上的ng配置发一下吧看看。

goudanz commented 2 years ago

image

goudanz commented 2 years ago

我直接有把文档里的nginx配置发给运维,但是他们貌似有一套自己的部署脚本。所以没按照我发的来

goudanz commented 2 years ago

@zkboys 大佬,是哪里没配置正确吗?

zkboys commented 2 years ago

你看看其他页面是不是F5刷新都是这个问题?如果都是这个问题,就跟iframe没有什么关系。

zkboys commented 2 years ago

让你们那边运维查查,线上的NG是否配置了 try_files

location / {
    index index.html;
    try_files $uri $uri/ /index.html; #react-router 防止页面刷新出现404
}
goudanz commented 2 years ago

是这个嘛? image

goudanz commented 2 years ago

你看看其他页面是不是F5刷新都是这个问题?如果都是这个问题,就跟iframe没有什么关系。

其他没有push url的页面都没问题;

iframe嵌套页面直接进不去。 然后后面做了一个新的功能,也是用的push,也是进不去。render都没渲染出来;

后面做的一个report的功能,push url可以进入页面。但是刷新就会报同样的问题;

zkboys commented 2 years ago

排查一下 iframe页面单独访问是否有问题。

goudanz commented 2 years ago

@zkboys 大佬,不好意思,真是我改出问题了。我把v5版本拉下来覆盖到项目的线上目录。是没问题的;

image

goudanz commented 2 years ago

@zkboys 找到问题了。原因是我在package.json里配置了homepage:“.”

{
    "name": "react-adminv4",
    "version": "4.0.0",
    "private": true,
    "homepage": ".",
    "scripts": {
    ...
goudanz commented 2 years ago

@zkboys 配置homepage的原因是第一次部署之后打不开首页。就像我现在去掉homepage后,也打不开首页一样。

zkboys commented 2 years ago

homepage 这个东西没用啊~

zkboys commented 2 years ago

是不是你们运维用到这个东西了,我记得项目中是没有用这个东西的。

goudanz commented 2 years ago

然后我也没找到为啥会打不开首页。就是直接敲根域名。

我现在直接从根域名进入,就会进入404页面或者直接不显示。然后我把home/index.jsx里的 路由改成了 /home,现在点击左上角标题跳不到首页了。我怎么能手动控制左上角标题哪里的点击操作呀?

goudanz commented 2 years ago

是不是你们运维用到这个东西了,我记得项目中是没有用这个东西的。

是我加的homepage

goudanz commented 2 years ago

我再尝试一下

goudanz commented 2 years ago

@zkboys 大佬,搞定了

image

我先删掉homepage,

再全部还原对home/index.jsx 的路由配置。就好了

goudanz commented 2 years ago

@zkboys 多谢大佬!麻烦您啦!