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

Azure Function提示JS语法错误,但语法已验证合法的问题排查

问题分析与解决方案

错误原因

这个SyntaxError: Unexpected token function错误的根源很明确:你的Azure Function所使用的Node.js运行时版本不支持ES2017引入的async function语法。

async/await是在Node.js 7.6.0版本才正式成为稳定特性并默认启用的。如果你的Function App配置的Node.js版本低于7.6.0(比如早期的Node.js 6.x版本,这曾是Azure Functions的默认版本之一),Node.js的虚拟机(VM)模块在解析代码时会无法识别async function这种语法结构,从而抛出这个错误。

排查与解决建议

  • 检查并更新Azure Functions的Node.js运行时版本

    1. 登录Azure门户,定位到你的Function App资源
    2. 进入左侧导航栏的「配置」→「常规设置」页面
    3. 在「运行时版本」下拉菜单中,选择Node.js 8.x及以上的长期支持(LTS)版本(比如当前的18.x或20.x版本)
    4. 保存配置后,重启Function App使变更生效
  • 对齐本地与云端的Node.js版本
    在本地开发环境中,打开终端执行node -v命令,确认本地使用的Node.js版本和Azure上配置的版本一致,避免出现本地调试正常但部署后报错的情况

  • 兼容旧版本的备选方案(不推荐)
    如果因特殊限制无法升级Node.js版本,可以使用Babel将ES2017代码转译为兼容旧版本的ES5代码,但这会增加项目的构建复杂度,因此优先推荐直接升级Node.js版本

附:你的代码与错误信息

代码示例

module.exports = async function (context, req) { 
  if (req.query.name || (req.body && req.body.name)) { 
    // generate mock result 
    const mockChecker = new mockCheckBuild(); 
    const result = await mockChecker.runAsync(); 
    context.res = { body: result }; 
  } else { 
    context.res = { 
      status: 400, 
      body: "Please pass a name on the query string or in the request body" 
    }; 
  } 
  context.done(); 
}; 

function mockCheckBuild() { 
  this.statuses = ['Failed', 'Complete']; 
  this.branchId = 808; 
  this.buildNumbers = ['0.1.1.1023', '0.1.1.1024', '0.1.1.1025']; 
  this.runAsync = async function() { 
    return new Promise(resolve => setTimeout(() => resolve({ 
      branchId: this.branchId, 
      latestBuild: this.statuses.randomElement(), 
      buildStatus: this.buildNumbers.randomElement() 
    }) , 2000) ); 
  }; 
  return this; 
} 

Array.prototype.randomElement = function() { 
  const index = Math.floor(Math.random() * this.length); 
  return this[index]; 
}; 

错误信息

"Exception while executing function: Functions.CheckLatestBuild -> One or more errors occurred. -> D:\home\site\wwwroot\CheckLatestBuild\index.js:1\n(function (exports, require, module, __filename, __dirname) { module.exports = async function (context, req) {\n
^^^^^^^^\n\nSyntaxError: Unexpected token function\n at createScript (vm.js:56:10)\n at Object.runInThisContext (vm.js:97:10)\n at Module._"

内容的提问来源于stack exchange,提问作者Hiram Katz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:11:02