reactjs - 如何通过 Vercel 或 heroku 部署 React 网站?
问题描述
我正在开发一个用于研究的 React 项目并希望发布。我尝试了一些方法,但网站是空白的,我正在使用的 NEWS-API 没有数据。似乎没有错。它是一个前端应用程序,仅与 API 反应。
如果有帮助,这里是存储库链接。 https://github.com/carlos-souza-dev/apinews
解决方案
我从您的 github 存储库访问了您在 vercel 中的部署,并注意到了这个问题。
您通过不安全的 http 从 API 请求数据,而由 vercel 托管的页面使用 https。
现代浏览器不允许通过 https 服务的页面请求 http 数据。
它可能只是通过将您的 url 更改为使用 https 来修复,或者如果 API 没有 https,您可能必须执行其他解决方法。(尽管最好使用支持 https 的 API)
Mixed content requests blocked
我在访问您的页面后打开控制台以查看这些错误时注意到了这一点。
加载后出现空白页面的原因是Promise
从 API 获取数据被拒绝但从未处理导致 JavaScript 执行停止
[编辑 1] 我通读了您存储库中的一些代码,并注意到一个指向 localhost 的链接。看起来您尝试设置 nodejs 服务器以通过 https 代理数据
您使用的 API 似乎确实支持 HTTPS
结论:
- 尝试在您的反应代码中将 API 的链接更改为 https 而不是 http,看看它是否有效。如果是这样,则不需要您自己的后端服务器
- 但是,如果 API 不支持 HTTPS,请执行以下任一操作
- 迁移到具有 HTTPS 支持的不同 API
- 尝试通过后端为您的静态反应应用程序提供服务,并将您的反应应用程序指向
/path/to/api/route
没有绝对 URL 并使用此处package.json
所述的代理设置进行开发 - 指向 Internet 上后端服务器的完整路径(即删除 localhost 链接)
另请注意,您无法将后端部署到 vercel,但它确实支持无服务器功能
推荐阅读
- canvas - 使用 OGL 的多个画布
- javascript - Next.js API 和 Firebase 在第二次调用 API 端点后中断
- python - Django:尝试读取 CSV 文件时数据未在 HTML 中显示
- python-3.x - if语句的else部分在python中的for循环之外
- javascript - 简单的 NodeJS Express 应用程序无法获取 /url
- java - 如何在 Andriod studio 中解决这个 jitsi meet 问题?
- angular - 重试机制实际上并未触发 HTTP 调用
- api - 以自动化方式创建 KONG 工作区
- c# - 当应用程序退出时,如何使用协程将数据保存到 Web 服务器
- javascript - 错误:超过最大更新深度。React 限制嵌套更新的数量以防止无限循环