ค้นหาเว็บไซต์

javascript - ไม่สามารถกำหนดค่าข้อมูลแหล่งที่มาของ Apolloserver ใน typescript


ฉันค่อนข้างใหม่กับ TypeScript และ Apollo ฉันกำลังพยายามตั้งค่าเซิร์ฟเวอร์ Apollo ของฉันเป็นครั้งแรก แต่ฉันได้รับข้อผิดพลาดเกี่ยวกับ 'DataSource' ฉันไม่แน่ใจว่านี่หมายความว่าอะไรและจะแก้ไขอย่างไร

import  { ApolloServer, gql } from 'apollo-server';
//...
const { RESTDataSource } = require('apollo-datasource-rest');

class MoviesAPI extends RESTDataSource {
  constructor() {
    super();
    this.baseURL = 'https://movies-api.example.com/';
  }

  async getMovie(id) {
    return this.get(`movies/${id}`);
  }

  async getMostViewedMovies(limit = 10) {
    const data = await this.get('movies', {
      per_page: limit,
      order_by: 'most_viewed',
    });
    return data.results;
  }
}


const SERVERCONFIG = {
  'typeDefs': gql(typeDefs) ,
  resolvers,
  dataSources: ()=> ({
      MoviesAPI:  new MoviesAPI(),
  }  ) ,
};

const server = new ApolloServer(SERVERCONFIG);

ฉันได้รับข้อผิดพลาดดังต่อไปนี้:

Type '{ 'typeDefs': DocumentNode; resolvers: { Query: {}; }; dataSources: () => { MoviesAPI: MoviesAPI; }; }' is not assignable to type 'ApolloServerExpressConfig'.
    The types returned by 'dataSources()' are incompatible between these types.
      Type '{ MoviesAPI: MoviesAPI; }' is not assignable to type 'DataSources<object>'.
        Property 'MoviesAPI' is incompatible with index signature.
          Type 'MoviesAPI' has no properties in common with type 'DataSource<object>'.

ฉันสามารถทำให้ข้อผิดพลาดหายไปได้ถ้าฉันทำอะไรบางอย่างเช่น: dataSources:()=> ({...MoviesAPI}) แต่ฉันไม่คิดว่านั่นจะเป็นการแก้ปัญหา...

มีใครรู้ไหมว่าสาเหตุของเรื่องนี้คืออะไร?

คำตอบ #1

เปลี่ยน

const { RESTDataSource } = require('apollo-datasource-rest');

ถึง

import { RESTDataSource } from 'apollo-datasource-rest';

นี่ควรจะแก้ไขให้คุณได้