我想为我的项目生成静态路由(/contact
、/about
、...)和动态路由(/project/1
、/project/2,
...),以便当用户在访问任何一个时刷新页面这些路线,页面仍然有效。
但是在做 npm run generate
的时候我只得到 Generated route "/"
在 /dist
文件夹我看到没有生成路由。
使用的 Nuxt.js 版本:2.14.7
我尝试了 universal
和 spa
模式,它既不适用。
在 nuxt.config.js 我在顶部:
const axios = require('axios')
const dynamicRoutes = async () => {
const routes = await axios.get('http://my-project.com/wp/wp-json/projects/v1/posts')
.then(res => res.data.map((project) => `/project/${project.ID}/${project.post_name}`))
.then(res => res.concat(
[
'/about',
'/contact',
'/portfolio'
]
))
return routes
}
然后在 export default {}
:generate: {
routes: dynamicRoutes
},
最佳答案
router.mode='hash'
似乎与 generate.routes
不兼容配置。当router.mode
设置为 hash
, Nuxt 发生器 ignores generate.routes
and only creates a single route for /
,大概是因为 hash
中只存在着陆页。模式(即 index.html
设置一个路由器,它处理应用程序的所有路由)。
该哈希模式也与 the mode set in router.js
冲突。 ,但如果你真的需要哈希路由,你应该选择只在 router.js
中设置它。允许 generate.routes
待处理。
另请注意mode='universal'
相当于ssr=true
,所以 ssr=false
config与该模式一起没有意义。如果生成静态站点,则需要 ssr=true
这样任何 asyncData()
和 fetch()
调用钩子(Hook)来填充您的静态页面数据。此设置也无需附加 /about
, /contact
, and /portfolio
in dynamicRoutes()
,因为它们已经包含在生成的 route 。
GitHub PR
关于vue.js - Nuxt.js:无法生成路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65077883/