javascript - S3 存储桶无法通过路由加载 React 应用程序
问题描述
所以我目前处于这种情况,我想在 S3 存储桶中显示我的反应应用程序。当我将应用程序部署到 S3 存储桶时,它给了我一个静态 URL,我可以看到应用程序,例如;
https://s3bucket.www.react-application.cloud/apps/calculationapp/24995X095636Fb9b5821/index.html
在我的情况下,我看到一个空页面,我的假设是我在 index.js 文件中配置我的反应路由的方式存在一些问题;
index.js
const getBasename = path => path.substr(0, path.lastIndexOf('/'));
ReactDOM.render(
<BrowserRouter basename={getBasename(window.location.pathname)}>
<App />
</BrowserRouter>,
boostrapElement
);
我说这很可能是问题的原因是当我简单地部署它时;
ReactDOM.render(
<h1> Show me something ! </h1>
boostrapElement
);
它运行良好,我能够看到 h1
应用程序.js
class App extends Component {
render() {
return (
<React.Fragment>
<Route key="start-path" path='/' render={(props) => <HomeComponent {...props} filterData='HOME' />} />
<Route exact key="second-page" path='/react/second' render={(props) => <HomeComponent {...props} filterData='SECOND' />} />
<Route exact key="third-page" path='/react/third' render={(props) => <HomeComponent {...props} filterData='THIRD' />} />
</React.Fragment>
)
}
}
解决方案
您的帖子根本没有真正解释您的问题,但我怀疑这可能是您的问题。
转到托管网站的 S3 存储桶,上传文件后,转到“属性”选项卡并单击“静态网站托管”选项。选择“使用此存储桶托管网站”选项并将 index.html 提供给“索引文档”和“错误文档”字段。这将确保您对 S3 的请求不会像通常那样/react/second
尝试访问存储桶中的密钥。/react/second
推荐阅读
- php - 如何访问 MySQL 服务器 - XAMPP Mac OS?
- c# - C#:使用来自 /etc/shadow 的 linux 用户的 salt 验证密码哈希 (SHA512)
- typescript - 量角器 - 如何从 [object Object] 中提取数字
- c++ - 没有 new 的 C++ 构造函数
- python - sqlite3.OperationalError:靠近“<”:语法错误
- javascript - aws-sdk-mock 模拟 s3.putBucketPolicy 不起作用
- magento - 保存此配置时出现问题:注意:第 100 行的 vendor/magento/framework/App/Config/Value.php 中的数组到字符串转换
- bash - 在 while 循环中运行 docker 命令时出现“输入设备不是 TTY”错误
- sql - Oracle apex 19.1(用户身份验证和授权)
- google-cloud-platform - 我可以使用 Terraform 创建 GCP API 密钥吗?