创建反应应用 "homepage":“。”使用 aws api 网关时未使用来自 index.html 的正确相对路径

create-react-app "homepage": "." does not use correct relative path from index.html when using aws api gateway

我在 s3 上托管了一个静态网站。

由 aws 生成的静态托管 link(未使用此):

http://example-s3.s3-website.{region}.amazonaws.com

实际资源路径:

https://example-s3.s3.{region}.amazonaws.com/index.html

并使用 api-网关 HTTP 代理集成, 我设置了以下集成:

www.example.com/test/{proxy+} -> https://example-s3.s3.{region}.amazonaws.com/{proxy}

因此,www.example.com/test 将指向 index.html(默认页面)

来自 CRA 文档部分 "Serving the Same Build from Different Paths"

我设置了

"homepage": ".",

这样网站使用 www.example.com/test,又名 https://example-s3.s3.{region}.amazonaws.com/ 作为根目录(相对于文档中指示的 index.html)

但是,这无法获取任何 css 或 js.

如果我查看控制台,它会得到 404,因为它试图从 www.example.com/ 而不是 www.example.com/test.

获取资源

所以上面的 package.json 配置由于某些原因不起作用。

我已将配置更改为硬编码 url:

"homepage": "www.example.com/test",

现在它可以很好地获取所有资源。

我的问题是,为什么 "homepage": ".", 设置不起作用?! 此设置和 "homepage": "www.example.com/test", 应该相同 因为 index.html 在 www.example.com/test 提供(又名 https://example-s3.s3.{region}.amazonaws.com/index.html

但 CRA 出于某种原因认为 "homepage": ".", 实际上是 "homepage": "www.example.com",

我认为问题出在你的尾部斜线 Relative URLs and trailing slashes

这应该没问题,我创建了一个和你一样的配置。使用尾部斜杠,它可以工作。 没有

就不行

https://xswprgicvd.execute-api.ap-southeast-1.amazonaws.com/app/

编辑:在评论区添加了qkhanhpro添加的图片。