Heroku / Express:尝试访问子路由时(未刷新)“未找到”

时间:2018-10-04 17:29:07

标签: node.js reactjs express heroku

我有一个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'))

有人知道可能是什么问题吗?

1 个答案:

答案 0 :(得分:0)

我发现问题出在哪里,我只是走错了路。应该是:

res.sendFile(path.resolve(__dirname + '/app/client/build/index.html'))

添加了“ / app”部分