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

在Axios try-catch语句中为异常e添加any类型时触发Unexpected token, expected ')'错误的技术问询

解决Catch块中类型标注的语法错误问题

这个问题我太熟悉了!你碰到的核心矛盾在于:原生JavaScript并不支持在catch的参数上直接添加类型标注——你写的catch (e: any)是TypeScript专属语法,但如果你的代码文件没有以.ts/.tsx为后缀,或者项目的TypeScript编译配置没正确生效,JS解析器就会把: any当成非法语法,抛出「Unexpected token, expected ')'」错误。

而你移除类型标注后代码能运行,是因为catch(e)是标准ES语法,任何JS环境都能识别;但Git流水线要求显式添加类型,说明它在执行TypeScript类型检查,所以咱们得让类型标注被正确处理。

下面给你几个可行的解决办法:

1. 确保文件使用TypeScript扩展名

把你的文件后缀从.js改成.ts(普通TS文件)或.tsx(React组件文件)。这样TypeScript编译器就能正确解析catch (e: any)的语法,既满足流水线的类型要求,也不会有语法错误。

2. 在JavaScript文件中手动断言类型(如果不能改扩展名)

如果因为项目限制必须保留.js后缀,可以在catch块内部用类型断言来标注e的类型,这样既符合JS语法,又能通过Git流水线的类型检查:

try {
  await axios.patch("/scriptschedule/" + pk + "/", postData);
  setSubmitting(false);
  afterCreateOrUpdateAction();
} catch (e) {
  // 手动断言e为any类型
  const error = e as any;
  setSubmitting(false);
  let message = error.response.data && error.response.data.non_field_errors 
    ? error.response.data.non_field_errors 
    : "Error. Please try again";
  addToast({
    id: "1",
    title: "Error",
    color: "danger",
    text: <p>{message}</p>,
  });
}

3. 检查TypeScript配置(如果已经是TS文件)

如果你的文件已经是.ts/.tsx但还是报错,检查项目根目录的tsconfig.json:

  • 确认compilerOptions.target设置为ES6或更高版本(ES6才支持await和箭头函数等语法)
  • 确保include数组包含了你的这个文件,避免TS编译器忽略它

总结一下:你的代码逻辑本身没问题,只是混淆了JavaScript和TypeScript的语法规则——类型标注是TS的特性,必须让TS编译器来处理它,才能同时满足运行和流水线检查的要求。

内容的提问来源于stack exchange,提问作者NeERAJ TK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:53:10