NextJS/Typescript/Apollo 错误;类型上不存在属性

Posted

技术标签:

【中文标题】NextJS/Typescript/Apollo 错误;类型上不存在属性【英文标题】:NextJS/Typescript/Apollo error; property does not exist on type 【发布时间】:2020-07-09 22:50:54 【问题描述】:

我对 NextJS 和 Typescript 还很陌生,我正在实现无头 CMS Strapi,但在使用 Apollo 时遇到了问题。我整个周末都在搜索谷歌,试图更好地理解这个问题。我希望有人可以在这里帮助我。

错误

在我的_app.tsx 中收到以下错误

Property 'apollo' does not exist on type 'AppPropsType<Router, >'.

下面的MyApp 函数出现错误。

我的_app.tsx

import * as React from 'react'
import  AppProps  from 'next/app'
import  ApolloProvider  from '@apollo/react-hooks'
import withData from '../../utils/apollo'

import 'circular-std'
import 'react-multi-carousel/lib/styles.css'
import '../scss/styles.scss'

function MyApp( Component, pageProps, apollo : AppProps) 
  return (
    <ApolloProvider client=apollo>
      <Component ...pageProps />
    </ApolloProvider>
  )


export default withData(MyApp)

在前端设置第 3 节下对应 Strapi setup tutorial here。

【问题讨论】:

【参考方案1】:

您得到的错误是正确地告诉您,来自 NextJS 的 AppProps 没有 apollo 属性,因为 NextJS 对阿波罗一无所知。 Apollo 是一个不同的图书馆。

要设置ApolloProvider,您需要create your client as described in the Apollo docs。像这样的:

const client = new ApolloClient(
  uri: 'https://48p1r2roz4.sse.codesandbox.io',
);

function MyApp( Component, pageProps : AppProps) 
  return (
    <ApolloProvider client=client>

【讨论】:

感谢 Klas 的回复,现在正在进一步研究!【参考方案2】:

或者,我做了以下事情:

import App,  AppProps   from 'next/app';
import  ApolloProvider, ApolloClient  from '@apollo/client';

interface Props 
  apollo: ApolloClient<>;


const MyApp = ( Component, pageProps, apollo : AppProps & Props) => 

【讨论】:

以上是关于NextJS/Typescript/Apollo 错误;类型上不存在属性的主要内容,如果未能解决你的问题,请参考以下文章