node.js - 部署到 heroku 的 React/Node 应用程序显示空白屏幕

标签 node.js reactjs heroku webpack redux

我第一次尝试将我的应用程序部署到 Heroku。我在后端使用 create-react-app、redux 和 node/mongodb。当我通过 heroku open 进入我的应用程序时,我看到的是空白屏幕。当我查看源代码时,我的 React index.html 模板已就位,但当我单击任何 Assets (如 manifest.json 或 main.js 文件)时,它们完全是空白的。我的所有后端 API 都在工作(我转到了我的 google oauth 路线,并收到了 google 登录屏幕的正确欢迎),但没有一个 View 正在渲染。

我检查了我的构建目录,从我的菜鸟眼睛看来,所有构建似乎都工作正常。我检查了 Heroku 日志,没有任何错误。

我知道这很模糊,但是有什么我应该检查的吗?我可以在这里分享什么来帮助获得一些指导吗?我很抱歉没有在这篇文章的初稿上分享更多内容,但老实说,我不知道该分享什么来澄清。我很高兴编辑和添加代码。这是我的第一次“全栈”部署,所以我对此完全陌生,3 小时的故障排除和谷歌搜索并没有帮助我解决这个问题。该应用程序在我的笔记本电脑上运行得很好,所以我猜测它与我的 create-react-app 构建有关。

这是我在 Heroku 上的应用程序的链接。 https://desolate-stream-86031.herokuapp.com/

编辑解决方案

感谢伊恩的指导,尽管我的帖子很糟糕且含糊不清。问题是我如何尝试在生产中提供静态 Assets 。

我使用的是:

app.use(express.static('client/build'));

我需要使用的是:

app.use('/static', express.static(path.join(__dirname, 'client/build')));

我对这些差异不太了解,所以我要对此进行调查。如果有人能启发我,我将不胜感激!

不确定这是否是不好的形式,但我将他的答案标记为正确答案,即使他的答案是以对其答案的评论的形式出现的。

最佳答案

JS 文件不是空的,只是无论您请求什么,服务器都会返回index.html。我不知道您使用的是什么服务器,但它似乎配置为提供单页应用程序(始终是index.html),但不是静态 Assets (JS、CSS 等)。

编辑:我可以从 JS 文件请求中的 X-Powered-By header 看出您正在使用 Express 框架来提供静态资源。您可以在https://expressjs.com/en/starter/static-files.html查看文档了解如何配置 Express 以正确提供静态资源。您需要指定提供静态 Assets 的路径,例如/static 为 yourdomain.com/static,静态文件在系统上实际存在的路径。我假设 create-react-app 默认在/static 查找静态资源。

关于node.js - 部署到 heroku 的 React/Node 应用程序显示空白屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46354551/

相关文章:

javascript - 在 Redux-React Native 中使用 reducers 时导入/导出

ruby-on-rails-3 - 带有设备的子域路由在heroku上不起作用

javascript - NodeJS - 如何打破一个功能?

javascript - nodejs process.hrtime() 挂掉是什么原因?

javascript - Node.js 和 Forever/Forever-Monitor

node.js - GraphQL 嵌套解析器

javascript - History.push() 和 props.location.state 导致 "Cannot read property ' state' 未定义”

javascript - 为什么 typescript 在 useState React 上抛出错误

Ubuntu 16.04 上的 Heroku 登录错误

ruby-on-rails - 部署重写的 Github/Heroku 应用程序