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

TypeScript中async函数前缀报'Unexpected token'错误求助

解决TypeScript中async函数报'Unexpected token'错误的方案

我来帮你排查这个问题——虽然Node.js 8+已经原生支持async/await语法,但你升级到9.11.1后仍遇到TS的Unexpected token错误,大概率不是Node版本的锅,而是TypeScript配置或编译环节的问题,给你列几个常见的排查和解决方向:

  • 检查TypeScript的编译目标版本
    TypeScript默认的编译目标(target)可能是ES3或ES5,这两个版本并不支持async/await语法。你需要在tsconfig.json里明确指定更高的目标版本:

    {
      "compilerOptions": {
        "target": "ES2017", // 直接支持async/await的版本
        "module": "CommonJS" // 适配Node.js的模块系统
      }
    }
    

    如果需要兼容更低版本的Node,也可以把target设为ES2015,同时确保启用downlevelIteration等相关配置让TS把async/await转译为Node支持的代码。

  • 确认是否正确编译或运行TypeScript文件
    很多人会犯的一个错误:直接用Node执行.ts文件(比如node test.ts),但Node本身无法解析TypeScript语法,必须先编译为JavaScript再运行,或者使用ts-node直接运行:

    # 先编译再执行
    tsc test.ts && node test.js
    # 或者用ts-node直接运行TS文件
    npx ts-node test.ts
    
  • 检查TypeScript版本是否过旧
    虽然async/await在TypeScript 1.7版本就已经支持,但如果你的TS版本过于老旧,可能会出现语法识别问题。先检查当前TS版本:

    tsc --version
    

    如果版本低于3.x,建议升级到较新的稳定版本:

    npm install typescript --save-dev
    
  • 安装Node.js的类型定义文件
    有时候TypeScript无法正确识别Node.js的环境API,导致语法校验出错,安装@types/node可以解决这个问题:

    npm install @types/node --save-dev
    
  • 排查代码中的隐性语法错误
    有时候Unexpected token错误并不是因为async关键字本身,而是函数内部存在其他语法问题(比如漏掉括号、逗号,或者错误的语法嵌套),导致TS解析器报错。比如下面的错误写法:

    async function test() {
      return new Promise((resolve) => {
        setTimeout(() => resolve("done") // 这里漏掉了闭合的括号和括号
      })
    }
    

    仔细检查async函数内部的代码,确认没有其他语法错误。

内容的提问来源于stack exchange,提问作者nick.cook

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:22:43