在构建期间禁用服务器查询

Posted

技术标签:

【中文标题】在构建期间禁用服务器查询【英文标题】:Disable server query during build 【发布时间】:2021-10-04 11:01:31 【问题描述】:

我们有一个 docker 镜像来设置后端服务器和使用 ApolloClient 的前端 NextJS 应用程序。在 NextJS 应用程序的构建过程中,Apollo 客户端尝试查询后端服务器的 graphql 端点,该端点由于服务器尚未启动而无法正常工作。

有没有办法让 ApolloClient 在构建期间不查询外部服务器? 这是构造函数:

function createApolloClient() 
  return new ApolloClient(
    s-s-rMode: typeof window === 'undefined',
    link: createUploadLink(
      uri: process.env.HOSTNAME + '/graphql',
      credentials: 'same-origin',
    ),
    cache: new InMemoryCache(
      typePolicies: 
        Query: 
          fields: 
            allPosts: concatPagination(),
          ,
        ,
      ,
    ),
    onError: ( networkError, graphQLErrors ) => 
      console.log('graphQLErrors', graphQLErrors)
      console.log('networkError', networkError)
    
  )

我们最终想要的是一个运行后端 (Java) 服务器的 docker 容器,该服务器为 NextJS 构建的静态文件提供服务。

【问题讨论】:

Next.js应用不能查询后端API怎么办? 【参考方案1】:

您的问题不清楚,但您希望何时运行查询?

如果应该是构建时间,为什么后端服务器没有运行? Next.js 应该从哪里获取数据? 在请求时,由服务器?使用getServerSideProps 在请求时,由客户端(浏览器?)检查 typeof(window) !== 'undefined' 并使用 fetch + async/await。

【讨论】:

我希望在用户与需要查询后端 API 的应用程序交互时运行查询,因此可能是您列出的选项 3。谢谢指点,我去看看! 那么是的,这些获取将完全绕过 next.js 并使用标准 ES6 直接从客户端查询您的 API:developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

以上是关于在构建期间禁用服务器查询的主要内容,如果未能解决你的问题,请参考以下文章

错误代码:2013。查询期间丢失与 MySQL 服务器的连接

在查询异常期间丢失与 MySQL 服务器的连接

2013, '在查询期间丢失与 MySQL 服务器的连接 - Pymysql Microsoft sql server management Studio

查询期间失去与 MySQL 服务器的连接

Django OperationalError(2013,“查询期间丢失与 MySQL 服务器的连接”)

在调试构建期间禁用 SonarLint 分析