我有一个React Web App部署到Heroku并在Express / Node.js服务器上运行。当有人尝试访问任何路由时,我的服务器index.js文件将运行以下代码:
const path = require('path')
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'))
})
当我从根路由('/')加载应用程序时,一切都很好,并且当我浏览应用程序时(使用React Router),一切都还不错。当我尝试从子路由(例如/ contact)刷新时,会出现问题,然后出现“未找到”错误。当我查看Heroku日志时,会看到以下消息:
Error: ENOENT: no such file or directory, stat '/client/build/index.html'
我应该注意,我正在服务器上运行构建脚本,当我登录Heroku时,我可以看到“ build”文件夹,并且所有内容(包括“ index.html”)都存在。
我还应该注意,我尝试了其他sendFile配置,但是没有运气,例如:
res.sendFile(path.resolve(__dirname + '/client/build/index.html'))
有人知道可能是什么问题吗?
答案 0 :(得分:0)
我发现问题出在哪里,我只是走错了路。应该是:
res.sendFile(path.resolve(__dirname + '/app/client/build/index.html'))
添加了“ / app”部分