3

如果用户没有下载 react_app.js (第一次来),使用 react 你需要在任何路径中提供 index.html 和 react_app.js 。

然后,您需要从 react_app.js 提供一些 api 调用,但如果您使用相同的 url 进行 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!!!!')
  }
})
4

1 回答 1

6

正如@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' })
于 2019-02-08T18:58:35.663 回答