首页 > 解决方案 > 使用 create-react-app 自定义静态文件的路径?

问题描述

我已经在 Django-React 应用程序上工作了一段时间,今天终于把它推送到 Heroku。我使用在 DjangoCon-talk 中看到的一种技术从 Django 模板视图中提供我的 SPA。我手动构建 react-app,然后将index.html. 我还使用 AWS S3 来存储我的静态文件,这就是我卡住的地方。

当我推送到 Heroku 时,collectstatic会将我的静态文件添加到 AWS。但是,我访问这些静态文件的唯一方法是,如果我推送应用程序,从 AWS 复制静态 url,将它们粘贴到我的样式表/脚本标签中index.html,然后再次推送。

有没有办法在运行时动态创建这些npm run build

https://my-bucket.s3.amazonaws.com/static/js/{my_js_file}.chunk.js什么?

如果这是不可能的,还有其他解决方案吗?提示将不胜感激。

标签: djangoreactjsamazon-web-servicesamazon-s3npm-scripts

解决方案


我通过捕获所有以“静态”开头的路径并将它们重定向到存储桶来解决这个问题。

以下是在我的 urls.py 中使用“静态”重定向路径并将其余部分转过来做出反应。对于其他情况,您可以添加您的 api 地址等:

urlpatterns += [
    re_path('^static', redirect_static),
    re_path('.*', render_react),
]

以下是redirect_static函数/视图:

def redirect_static(request):
    return redirect(f"https://<bucket_address>{request.path}")

推荐阅读