Javascript 来自api的Nuxt动态路由

Javascript 来自api的Nuxt动态路由,javascript,vue.js,nuxt.js,Javascript,Vue.js,Nuxt.js,我对numxt.config.ts中的ExtendDrootes有问题 当我构建nuxt并生成页面时,我希望路由器根据api调用知道哪个组件指向哪个路径 因此,在Nuxt.config.ts中,我执行以下操作: router: { extendRoutes(routes resolve){ cms.getRoutes().then(x => { <-- this returns an array from api call with objects needed for

我对numxt.config.ts中的ExtendDrootes有问题

当我构建nuxt并生成页面时,我希望路由器根据api调用知道哪个组件指向哪个路径

因此,在Nuxt.config.ts中,我执行以下操作:

 router: {
  extendRoutes(routes resolve){
    cms.getRoutes().then(x => { <-- this returns an array from api call with objects needed for path
       for(var i = 0; i < x.items.lenth; i++){
         routes.push({
            name: x.items[i].name,
            component: component: resolve(__dirname, `pages/index.vue`), <- this is just and ex. of comp.
            path: x.items[i].slug,
         });
       }
    })
  }
}
路由器:{
可扩展数据源(路由解析){

cms.getRoutes().then(x=>{这不是使用
async/await
的方法。它应该消除
.then()
链接,但您仍然在这里使用它。请像这样尝试:

router: {
  async extendRoutes(routes, resolve) {
    let x = await cms.getRoutes();
    for (var i = 0; i < x.items.length; i++) {
      routes.push({
        name: x.items[i].name,
        component: resolve(__dirname, `pages/index.vue`),
        path: x.items[i].slug
      });
    }
  }
};
路由器:{
异步扩展节点(路由、解析){
设x=wait cms.getRoutes();
对于(变量i=0;i
我最终使用了nuxt路由器模块(),在那里我可以删除nuxt路由器并创建自己的路由器


在这里,我可以使用api调用和await/async,并为我想要的路由创建逻辑。

你可以向我们展示你的异步尝试吗?是的,我将用async@Ifaruki它现在已被编辑,正如所解释的,我不能使用async await;)尽管我在ExtendRoots中使用了async,但它提供了路由。foreach不是一个函数,不能将
foreach()
与async一起使用,但可以使用
for()
@AndersbootsManlarsen
router: {
  async extendRoutes(routes, resolve) {
    let x = await cms.getRoutes();
    for (var i = 0; i < x.items.length; i++) {
      routes.push({
        name: x.items[i].name,
        component: resolve(__dirname, `pages/index.vue`),
        path: x.items[i].slug
      });
    }
  }
};