Reactjs “自定义根路径下的问题”/app";使用创建react应用程序和react路由器
我正在具有以下设置的主机上部署应用程序:Reactjs “自定义根路径下的问题”/app";使用创建react应用程序和react路由器,reactjs,create-react-app,Reactjs,Create React App,我正在具有以下设置的主机上部署应用程序: 等等 我需要为我的React应用程序部署一个自定义根路径/app,该应用程序将位于此保护伞下。我正在使用react路由器v5和创建react应用程序 问题 当我构建应用程序(我正在使用)时,我会得到一个空白页面。当我转到localhost:5000/app/时,没有显示任何内容 我做了和的所有建议,但仍然无法加载我的应用程序 我也很困惑:使用react路由器的basename和CRA的主页字段有什么区别?我应该两者都用,还是一个或另一个 编辑:可
- 等等
/app
,该应用程序将位于此保护伞下。我正在使用react路由器v5
和创建react应用程序
问题
当我构建应用程序(我正在使用)时,我会得到一个空白页面。当我转到localhost:5000/app/
时,没有显示任何内容
我做了和的所有建议,但仍然无法加载我的应用程序
我也很困惑:使用react路由器的basename
和CRA的主页
字段有什么区别?我应该两者都用,还是一个或另一个
编辑:可能发现问题。设置<代码>主页= /APP < /代码>也改变了我的JS包的路径,它没有识别(因此空白页)。我在我的build
dir中手动添加了一个app
文件夹,如下所示:build/app/static
,它成功了。CRA不应该自动这样做吗
我的设置
app.tsx
命令在本地为prod构建提供服务
我导航到http://0.0.0.0:5000/app/
并获得一个空白页(无网络呼叫)
我试过的
- 在
package.json中设置
主页:“/app”
- 为react路由器设置basename
- 显示了使用网站完整路径的示例。这也不起作用:
我让它工作了,尽管这是一个解决办法 正如Mohit的评论所提到的,
homepage
字段使其成为所有资产都由homepage
中定义的子路径预挂。我得到了一个空白屏幕,因为它找不到我的JS包的新路径,也就是说它从提供/build/static/JS/.
到/build/app/static/JS/.
解决方案(解决方案)
- 在
目录下创建一个名为build
(或任何新根路径的名称)的新文件夹app
- 将您的
文件夹移动到/build/static
build/app/static
- 这就是Dockerfile的外观:
pwd
和echo
行,我添加了它,这样我就可以看到它工作了
我不知道CRA为什么默认不这么做。这可能是因为我正在使用重新布线的
react应用程序,这会干扰CRA的网页配置?进程.env.PUBLIC\u URL
值是否正确?我在build命令中找不到它,或者您是否已将其包含在.env文件中。基本上,主页
用于访问与提供的价值相关的资产,例如CSS文件和图像。而react路由器使用basename
值来处理相对于所提供值的客户端路由。为了使应用程序正确运行,这两个选项都应该包括在内。是的,当我看到console.logprocess.env.PUBLIC\u URL时,我看到了/app
。啊,我明白了-谢谢你在主页/basename
上的澄清!。所以我看到了部分问题——添加homepage=/app
也会将JS包的路径从static/JS/main.JS
更改为app/static/JS/main.JS
。我在我的build
dir中手动添加了一个app
文件夹,并将我的static
文件夹移动到其中。成功了。这不应该自动发生吗?
<Router basename={process.env.PUBLIC_URL}>
...
</Router>
scripts: {
"build-prod": "GENERATE_SOURCEMAP=false REACT_APP_ENVIRONMENT=production react-app-rewired build",
},
...
"homepage": "/app",
> npm run build-prod && serve -s build -l tcp://0.0.0.0:5000
The project was built assuming it is hosted at /app/.
You can control this with the homepage field in your package.json.
The build folder is ready to be deployed.
Find out more about deployment here:
bit.ly/CRA-deploy
"homepage": "https://example.com/app",
RUN pwd
RUN echo $(ls -1 $pwd)
RUN echo $(ls -1 ./build)
RUN mkdir -p ./build/app
RUN mv ./build/static ./build/app # now it should be /build/app/static
RUN echo $(ls -1 ./build)