【发布时间】:2022-01-23 13:05:39
【问题描述】:
我很确定这个问题的答案是否定的......但是有没有办法在生产服务器运行时即时启动 .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)
}
},
我们有一系列需要从 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'
})
})
所有这些的目的是在 CMS 更新页面时有一个客户端构建触发器。
更多关于 router.js 的信息在这里: https://nuxtjs.org/docs/directory-structure/nuxt
关于在这里扩展路由器: https://nuxtjs.org/docs/features/file-system-routing/#extending-the-router
【问题讨论】:
-
对于
target: 'static'或'server'? -
另外,你检查过preview mode吗?
-
谢谢@kissu,是的,目标:'服务器'。预览模式无法解决此问题,因为刷新单个页面,我们需要刷新(或添加到数组的开始/结束)整个站点的所有路由。
-
你试过using build.watch吗?您可以在服务器上生成一个
json文件,该文件将包含有关您的 cms 的动态路由的信息,将该文件导入您的 extendRoutes 并 build.watch 该文件以防它不会触发重建 -
谢谢,我会写一个答案
标签: vue.js nuxt.js vue-router