Vue.js Nuxt生成不';t用内容填充生成的HTML文件

Vue.js Nuxt生成不';t用内容填充生成的HTML文件,vue.js,axios,nuxt.js,server-side-rendering,Vue.js,Axios,Nuxt.js,Server Side Rendering,我有一个基于外部无头API(JSON)的Nuxt项目,它将内容提供给应用程序。当我尝试运行npm run generate时,Nuxt将创建一个dist文件夹,其中包含文件夹中的所有路由,并用index.html文件填充每个路由。但是,这些HTML文件中没有任何源于API的内容。预期的行为是我能够看到静态生成的内容 有人能告诉我为什么预渲染我的应用程序不起作用吗?我怀疑我的numxt.config.js有问题: generate: { routes() { // Routes

我有一个基于外部无头API(JSON)的Nuxt项目,它将内容提供给应用程序。当我尝试运行npm run generate时,Nuxt将创建一个dist文件夹,其中包含文件夹中的所有路由,并用index.html文件填充每个路由。但是,这些HTML文件中没有任何源于API的内容。预期的行为是我能够看到静态生成的内容

有人能告诉我为什么预渲染我的应用程序不起作用吗?我怀疑我的numxt.config.js有问题:

generate: {
    routes() {
      // Routes from headless CMS
      const pages = axios.get(`${api}/routes.json`).then((res) => {
        return res.data.data.map((item) => {
          return item.route
        })
      })

      // External API with vacancies
      const vacancies = axios
        .get('https://api.external.website')
        .then((res) => {
          return res.data.jobs.map((item) => {
            return '/careers/vacancies/' + item.id
          })
        })

      // Combine both routes
      return Promise.all([pages, vacancies]).then((values) => {
        return [...values[0], ...values[1]]
      })
    }
  }

我不确定它为什么会这样(我也想理解为什么),但这是我发现的一个示例解决方法


回到笑话

笑话ID:{{$route.params.ID}
joke ID
是从外部API获取的,但是由于
numxt generate
已经为所有动态文章页面创建了路由,并将其ID设置为参数,因此我可以轻松地从路由中提取ID

<template>
  <div>
    <nuxt-link to="/jokes">Back To Jokes</nuxt-link>
    <hr />
    <small>Joke ID: {{ $route.params.id }}</small>
  </div>
</template>