Nuxt.js服务器端渲染:启动服务器后数据不会更新



我面临一个问题,Nuxt.js和Apollo没有使用API源代码的最新内容更新我的页面内容。服务器在启动时会被版本"卡住",除非我重新启动服务器,否则数据不会更新。我在Github上搜索过任何类似的问题,甚至在这里也找不到任何东西。

我使用"@nuxtjs/apollo": "^4.0.1-rc.5""nuxt": "^2.14.12"

当使用nuxt dev模式时,我没有问题,我的页面数据被正确地提取,如果我在API上更改了它的一些数据,然后重新加载页面,数据就会得到更新。

Nuxt被设置为以服务器为目标,因此它不构建静态文件。

当我使用nuxt build && nuxt start进行SSR时,页面最初会显示正确的数据,所以SSR似乎可以工作。然而,如果我编辑API的数据,然后重新加载页面,我不会更新页面内容,而是更新运行nuxt start时的版本。

如果我停止并重新启动应用程序,然后重新加载页面,我会显示正确的更新数据。我觉得这可能是一个与缓存相关的问题。

这是我的apollo配置,它被加载到Nuxt:中

import { InMemoryCache, IntrospectionFragmentMatcher } from 'apollo-cache-inmemory'
import introspectionQueryResultData from './graphql.schema.json'
const fragmentMatcher = new IntrospectionFragmentMatcher({
introspectionQueryResultData
})
const cache = InMemoryCache({ fragmentMatcher })
export default function (ctx) {
return {
httpEndpoint: MY_ENDPOINT,
cache
}
}

我需要Fragment Matcher来使用GraphQL片段并使用codegen生成类型,我的代码库在Typescript中。这在开发模式下很有魅力,但这可能是它在SSR中不起作用的原因,尽管我找不到原因。

在我的Vue组件上呈现我的页面,这里有一个示例配置:

apollo: {
page: {
prefetch: true,
query: queryPage, // imported GraphQL query with .gql file
variables() {
return {
id: 2
}
}
}
}

我不明白为什么我的服务器在启动后没有重新绘制数据。我尝试在Nuxt生成的服务器文件中进行调试,但没有成功。

我如何在加载页面时获取数据,而不必在每次更新API内容后重新启动应用程序?

适用于面临类似问题的任何人。降级到"@nuxtjs/apollo": "4.0.1-rc.1"工作。

最新更新