首页 > 解决方案 > 打字稿请求承诺没有重载匹配这个调用

问题描述

下面的代码在我的请求承诺上失败了,我已经尝试清理 node_modules 并再次安装依赖项

 try {
        const response = await request(reqOptions) // Error Highlighting `reqOptions`;
        this.products = _.concat(this.products, response.products);
        if(response.nextPage){
          return this.getProductsCatalog(response.nextPage);
        } else {
          return Promise.resolve(this.products);
        }
      } catch(err) {
        logger.error(err);
        return Promise.reject(err);
      }

错误

没有重载匹配此调用。Overload 1 of 3, '(uri: string, options?: RequestPromiseOptions, callback?: RequestCallback): RequestPromise',给出了以下错误。类型参数 '{ headers: { 'content-type': string; }; }' 不可分配给“字符串”类型的参数。Overload 2 of 3, '(uri: string, callback?: RequestCallback): RequestPromise',给出了以下错误。类型参数 '{ headers: { 'content-type': string; }; }' 不可分配给“字符串”类型的参数。Overload 3 of 3, '(options: (UriOptions & RequestPromiseOptions) | (UrlOptions & RequestPromiseOptions), callback?: RequestCallback): RequestPromise<...>',给出以下错误。类型参数 '{ headers: { 'content-type': string; }; }' 不可分配给类型为 '(UriOptions & RequestPromiseOptions) | 的参数 (UrlOptions & RequestPromiseOptions)'。类型'{标题:{'content-type':字符串;}; }' 不可分配给类型 'UrlOptions & RequestPromiseOptions'。类型 '{ headers: { 'content-type': string; 中缺少属性 'url' };

整体功能

  async getProductsCatalog(url: string): Promise<Product[]>{
    if(url === null) {
      this.products = [];;
      return this.sendGetRequest('/v1/catalog/products', 
        {
          pageSize: 40
        }
      )
      .then((res) => JSON.parse(res))
      .then((res) => {
        const response: ProductCatalogResponse = res;
        this.products = _.concat(this.products, response.products)
        if(response.nextPage) {
          return this.getProductsCatalog(response.nextPage);
        } else {
          return Promise.resolve(this.products);
        }
      });
    } else {
      let reqOptions = {
        headers: {
          'content-type': 'application/json'
        }
      };

      this.visitRequest(reqOptions, 'GET', url, {pageSize: 40}, false)
      try {
        const response = await request(reqOptions);
        this.products = _.concat(this.products, response.products);
        if(response.nextPage){
          return this.getProductsCatalog(response.nextPage);
        } else {
          return Promise.resolve(this.products);
        }
      } catch(err) {
        logger.error(err);
        return Promise.reject(err);
      }
    }

  }

标签: node.jstypescriptrequest-promise

解决方案


推荐阅读