我目前正在使用Angular(5)和GraphQL处理一些基本的东西,我在调用watchQuery
方法时遇到了一些问题。一旦我调用该方法,我的组件崩溃并返回以下错误:
ERROR TypeError: Object(...) is not a function
我在网上搜索了一个解决方案,但我找不到合适的解决方案。我的环境包含以下库:
我有一个带有一些导入和链接的sharedModule:
export class SharedModule {
constructor(apollo: Apollo, httpLink: HttpLink) {
apollo.create({
link: httpLink.create({uri: 'baseUri/graphql'}),
cache: new InMemoryCache()
});
}
}
我在列表组件中有以下代码:
getMovies() {
this.movies = this.apollo.watchQuery<Query>({ // <= where my error occurs
query: gql`
query {
movies {
id
title
genres
}
}
`
})
.valueChanges
.pipe(map((result) => result.data.movies));
}
完整错误包含以下代码行:
ERROR TypeError: Object(...) is not a function
at new QueryRef (QueryRef.js:6)
at ApolloBase.watchQuery (Apollo.js:30)
at MovieListComponent.getMovies (movie-list.component.ts:37)
at MovieListComponent.ngOnInit (movie-list.component.ts:29)
如果有人有任何建议或疑问,请告知我们。
答案 0 :(得分:1)
如果您使用的是Angular 5,则可能是因为您在问题中引用的版本取决于RxJS6。您有两种解决方案:
请勿尝试升级到RxJS 6并停留在Angular 5,您会遇到更多问题。
答案 1 :(得分:0)
您应该尝试降级grapqh
和graphql-tag
答案 2 :(得分:0)
发生此问题是因为RxJS v5和v6之间不匹配。
如果遇到问题,我们强烈建议升级到RxJS6。我们在几个大型项目中都完成了工作,没有任何问题。
如果您无法升级,则坚持使用阿波罗角1.0.X版。