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