ask*_*ale 5 heroku reactjs heroku-cli
我已经为这个错误苦苦挣扎了将近三个星期了,老实说,这让我发疯了。我已经使用 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'));
});
}
Run Code Online (Sandbox Code Playgroud)
但是每次我推送到 Heroku 时,我都会在控制台中收到此错误消息:
Error: ENOENT: no such file or directory, stat '/app/client/build/index.html'
Run Code Online (Sandbox Code Playgroud)
我也一直在尝试更改和修改路径中的目录,看看是否有任何变化。我还浏览了整个互联网关于此问题的潜在解决方案的感觉,但没有任何运气。如果有人至少能指出我在这里似乎做错的正确方向,我将不胜感激。
提前致谢。
我刚刚遇到了同样的问题。您需要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
Run Code Online (Sandbox Code Playgroud)
我在这篇方便的文章中找到了解决方案
dst*_*ana -4
没有使用 Heroku,我猜问题是“/app/client/build/index.html”。
它真的在/app/下吗?也许您应该使用相对路径,例如:
app/client/build/index.html
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6432 次 |
最近记录: |