You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

扩展Got包RequestError类时遇构造函数调用问题求助

扩展Got包RequestError类时调用父类构造函数异常问题

我在尝试扩展Got包的RequestError类时遇到问题,调用父类(super)构造函数时出现异常。

我的代码如下:

import { RequestError, NormalizedOptions } from 'got';

class NetworkError extends RequestError {
    constructor(err: RequestError, request: Request | NormalizedOptions) {
        super(err.message, err, request);
    }
}

报错详情:

类型“RequestError”的参数不能赋给类型“ErrorOptions | undefined”的参数。类型“RequestError”缺少类型“ErrorOptions”的以下属性:cause, ignoreDuplicates, expose, statusCode(ts2345)

解决方法

问题根源是你传入父类构造函数的第二个参数不符合RequestError的签名要求——RequestError的构造函数不接受另一个RequestError实例作为参数,第二个参数应该是包含请求配置的ErrorOptions对象。

修正后的代码:

import { RequestError, NormalizedOptions, RequestErrorOptions } from 'got';

class NetworkError extends RequestError {
    constructor(err: RequestError, request: Request | NormalizedOptions) {
        // 提取原错误的配置信息,合并传入的request参数
        const errorOptions: RequestErrorOptions = {
            ...err.options,
            request
        };
        super(err.message, errorOptions);
        // 将原错误设置为当前错误的原因,便于追踪
        this.cause = err;
    }
}

如果使用的是旧版本Got(v10及以下),RequestError的构造函数签名为(message: string, request: Request | NormalizedOptions, response?: Response),此时可直接调整参数顺序:

import { RequestError, NormalizedOptions } from 'got';

class NetworkError extends RequestError {
    constructor(err: RequestError, request: Request | NormalizedOptions) {
        super(err.message, request, err.response);
        this.cause = err;
    }
}

内容的提问来源于stack exchange,提问作者Aniket Babhulkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:13:10