如果用户尚未下载react_app.js(是首次访问),则使用react需要在任何路径下为index.html提供包含react_app.js的内容。
然后,您需要提供来自react_app.js的一些api调用,但是,如果您对GET使用相同的网址,那么,您将获得API调用响应,而不是带有react_app.js的index.html。
对此有什么解决方案?仅使用某些前缀进行api调用,并且仅在找不到路由时才发送index.html?
我的代码:
fastify.register(require('fastify-static'), {
root: path.join(__dirname, './static')
})
fastify.route({
method: 'GET',
url: '/',
handler: async (req, res) => {
res.send('you will get api call answer but you need to serve index.html with react_app.js first!!!!')
}
})
答案 0 :(得分:0)
如@Garrert所建议的,这是它的工作方式:
// Статические файлы
fastify.register(require('fastify-static'), {
root: path.join(__dirname, './static')
})
// this will work with fastify-static and send ./static/index.html
fastify.setNotFoundHandler((req, res) => {
res.sendFile('index.html')
})
// Here go yours routes with prefix
fastify.register(async openRoutes => {
openRoutes.register(require('./server/api/open'))
}, { prefix: '/api' })