Nuxt SSR 即时重建routes.json(生产)

chr*_*ole 6 vue.js vue-router nuxt.js

我很确定这个问题的答案是否定的...但是有什么方法可以在生产服务器从内部运行时即时启动 .nuxt/routes.json 和 .nuxt/router.js 文件的重建原生 nuxt 功能。nuxt.config.js router.extendRoutes 在初始构建时构建路由 - 尚未找到在服务器仍在运行时进行更新的方法。宁愿不必进行新的 npm 构建。

// Router middleware
router: {
    middleware: ['router-agent', 'ssr-promises'],
    async extendRoutes (routes, resolve) {
        // pulls in routes from external file
        await customRoutes(routes, resolve)
    }
},
Run Code Online (Sandbox Code Playgroud)

我们有一系列需要从 CMS 构建的自定义路线

// extendRoutes snippet
let pageRoutes = require('./routes-bkp.json')

try {
  const { data: { pages } } = await getPagesForRoutes.queryCMS()
  pageRoutes = pages
  console.log('Route Request Succeeded.')
} catch {
  console.log('Route Request Succeeded.!  Using backup version.')
}

pageRoutes.forEach(({ slug }) => {
  routes.unshift({
    name: slug,
    path: `/:page(${slug})`,
    component: '~/pages/_page'
  })
})
Run Code Online (Sandbox Code Playgroud)

所有这一切的目的是在 CMS 更新页面时有一个客户端构建触发器。

有关 router.js 的更多信息: https://nuxtjs.org/docs/directory-struct/nuxt

关于在这里扩展路由器: https ://nuxtjs.org/docs/features/file-system-routing/#extending-the-router

Ari*_*rik 3

build.watch可能会帮助您在文件更改时触发服务器重新启动。

您还可以在服务器上生成一个 json 文件,其中包含有关 CMS 动态路由的信息,将该文件导入到您的build.watchextendRoutes文件中,以防更改后不会触发重新启动

对于生产,您可以以编程方式使用 nuxt来公开侦听请求并重新启动服务器的服务器中间件