App*_*Pie 0 javascript nginx reactjs create-react-app ibm-cloud
我正在使用 create-react-app,它在我的本地运行良好,没有任何问题。当我将其部署在 IBM Cloud 上时,登录后,当我刷新页面时,它会给出404 未找到错误之前工作正常,不确定发生了什么。
我看到了很多相关的问题,我试图解决但没有成功的事情如下
1. 创建一个static.json
{
"root": "build/",
"routes": {
"/**": "index.html"
}
}
Run Code Online (Sandbox Code Playgroud)
2.我有这个设置
devServer: {
historyApiFallback: true,
contentBase: './',
hot: true
},
Run Code Online (Sandbox Code Playgroud)
3.我尝试添加路由器,但没有成功
import React, { Component } from 'react';
import styled from 'styled-components';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
class App extends Component {
render() {
return (
<>
<Router>
<Switch>
<Route exact path="/" component={SignUp} />
<Route path="/some" component={Some} />
</Switch>
</Router>
</>
);
}
}
export default App;
Run Code Online (Sandbox Code Playgroud)
4.我尝试添加以下内容
import { HashRouter } from 'react-router-dom'
<HashRouter>
<App/>
</HashRouter>
Run Code Online (Sandbox Code Playgroud)
这些似乎都不适合我。有什么建议
小智 5
当将build/
输出作为静态站点提供服务时,您必须将 nginx 配置为始终提供服务index.html
(否则,它将尝试将 url 路径匹配到不存在的静态文件夹/文件)。有关此行为的更多信息可以在文档中找到create-react-app
如果您使用 nginx docker 映像来为您的站点提供服务,则需要设置以下内容default.conf
:
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location ~ ^/$ {
rewrite ^.*$ /index.html last;
}
listen 80;
server_name localhost;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意rewrite ^.*$ /index.html
修改任何来电和服务的部分index.html
。
您的最小值Dockerfile
将如下所示:
FROM nginx
COPY default.conf /etc/nginx/conf.d/default.conf
COPY build/ /usr/share/nginx/html/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4754 次 |
最近记录: |