heroku 错误:ENOENT:没有这样的文件或目录,stat '/app/backend/frontend/build/index.html'

pbpqsu0x  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(161)

我把我的mern堆栈项目推到heroku master进行部署后,打开应用程序,它显示未找到。花了这么多的时间和引用相关的stackoverflow问题没有解决我的问题

我使用构建项目

"scripts": {
        "build": "cd backend && npm install && cd ../frontend && npm install && npm run build",
        "start": "node backend/server.js",
}

字符串
在终端里面我使用npm run build build成功地构建了我的项目

server.js

app.use(express.static(path.join(__dirname, '/frontend/build')));
app.get('*', (req,res) => {
  res.sendFile(path.join(__dirname, '/frontend/build/index.html'))
})

这是我的文件夹结构


的数据

build文件夹中的文件



将文件推送到heroku master成功返回,没有错误。登录heroku logs --tail给出了以下内容

2022-11-08T06:05:01.882420+00:00 heroku[web.1]: State changed from crashed to starting
2022-11-08T06:05:09.142138+00:00 heroku[web.1]: Starting process with command `npm start`
2022-11-08T06:05:11.262904+00:00 app[web.1]:
2022-11-08T06:05:11.262931+00:00 app[web.1]: > blog-app@1.0.0 start
2022-11-08T06:05:11.262932+00:00 app[web.1]: > node backend/server.js
2022-11-08T06:05:11.262932+00:00 app[web.1]:
2022-11-08T06:05:11.880253+00:00 app[web.1]: server connected on port http://localhost:52809
2022-11-08T06:05:12.097847+00:00 heroku[web.1]: State changed from starting to up
2022-11-08T06:05:13.711620+00:00 app[web.1]: server connected to mongoDB
2022-11-08T06:05:23.749281+00:00 heroku[router]: at=info method=GET path="/" host=thekrishblog.herokuapp.com request_id=f8b42c26-5f03-46e5-a04e-0fa6cb14d8b8 fwd="117.204.133.112" dyno=web.1 connect=0ms service=7ms status=404 bytes=380 protocol=https
2022-11-08T06:05:23.750032+00:00 app[web.1]: Error: ENOENT: no such file or directory, stat '/app/backend/frontend/build/index.html'     
2022-11-08T06:06:26.010343+00:00 heroku[router]: at=info method=GET path="/" host=thekrishblog.herokuapp.com request_id=18800012-c573-49aa-a6f8-b107f95a3013 fwd="117.204.133.112" dyno=web.1 connect=0ms service=2ms status=404 bytes=380 protocol=https
2022-11-08T06:06:26.008479+00:00 app[web.1]: Error: ENOENT: no such file or directory, stat '/app/backend/frontend/build/index.html'


我也参考了Heroku ENOENT: no such file or directory, stat '/app/build/index.html',但它确实回答了我的问题

u91tlkcl

u91tlkcl1#

我确定了两个问题,请逐一尝试检查是否都是这样:

**1.)**在您的错误消息中,我看到:/backend/frontend/build/index.html但应该是

frontend/build/index.html。要修复此问题,请将路径调整为:

if (process.env.NODE_ENV === 'production') {
  app.use(express.static(path.join(__dirname, '../frontend/build')));

  app.get('*', (req, res) =>
    res.sendFile(
      path.resolve(__dirname, '..', 'frontend', 'build', 'index.html')
    )
  );
} else {
  app.get('/', (req, res) => {
    res.send('200');
  });
}

字符串

**2.)**检查是否

/app
'/app/backend/frontend/build/index.html'
不算太多。我假设您将主机上的根路径调整为'app',但这不是必要的。

相关问题