reactjs - Heroku 没有这样的文件或目录,stat '/app/client/build/index.html'

标签 reactjs heroku heroku-cli

我已经为这个错误苦苦挣扎了将近三个星期了,老实说,这让我发疯了。我已经使用 Heroku 来部署我的项目一年多了,在我要发布我的这个新网站之前,我从未遇到任何错误。你看,我目前在我的节点项目中安装了一个名为“index.js”的邮件服务器,而我的完整 React 项目位于一个名为 client 的文件夹中。

enter image description here
现在,这就是奇怪的地方。我的 index.js 看起来像这样:

if (process.env.NODE_ENV === 'production') {
    app.use(express.static('client/build'));
    const path = require('path');
    app.get('*', (req, res) => {
      res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
    });
  }

但是每次我推送到 Heroku 时,我都会在控制台中收到此错误消息:
Error: ENOENT: no such file or directory, stat '/app/client/build/index.html'

我也一直在尝试更改和修改路径中的目录,看看是否有任何变化。我还浏览了整个互联网关于此问题的潜在解决方案的感觉,但没有任何运气。如果有人至少能指出我在这里似乎做错的正确方向,我将不胜感激。

提前致谢。

最佳答案

我刚刚遇到了同样的问题。您需要添加一个 heroku-postbuild package.json 中的脚本。我在我的项目中使用了 create-react-app,所以如果你没有,这条线可能会有所不同:
"heroku-postbuild": "cd client && npm install --only=dev && npm install && npm run build"
当我跑 npm run build , create-react-app 在 build/文件夹中编译一个缩小的 index.html 文件,因此如果您指向的构建文件位于其他地方,您可能需要修改该命令。

我的服务器结构是这样的:

server.js
client/
  build/
  public/
    - index.html
  src/
    - index.js



我在 this handy article 中找到了解决方案

关于reactjs - Heroku 没有这样的文件或目录,stat '/app/client/build/index.html',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54045419/

相关文章:

javascript - 如何在 React 中强制路由

node.js - 引用错误 : DATABASE_URL is not defined when trying to connect to heroku postgres db using Sequelize

iphone - Objective-C 流媒体上传音频

linux - 获取 Heroku dynos 的 IP

Heroku 插件 :create --fork doesn't migrate redis data

reactjs - 异步选择 react 不加载选项

javascript - 在 React 中调用制表函数

postgresql - 我可以使用 Heroku PG Backup 附加组件安排备份吗?

Heroku local 不读取我的 .env 文件

javascript - JS : How to filter after map