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

通过func start无法运行Rust Azure Function,但直接调用正常

Rust Azure函数func start提示"No job functions found"的排查与解决

核心排查与修复步骤

1. 校验function.json配置

  • 确认scriptFile路径为二进制文件的相对路径(相对于function.json所在目录):比如二进制在项目根目录,function.json在RustPoc子目录中,路径应写为../azfunction
  • 检查bindings配置:确保http触发的type为httpTrigger、direction为in,name与代码中接收请求的参数名一致,authLevel和route无语法错误

2. 确保二进制文件权限与路径适配

  • 给二进制添加可执行权限:执行chmod +x azfunction
  • 尝试将二进制移至function目录(如RustPoc/azfunction),修改function.json的scriptFile为./azfunction,再重启func服务

3. 修正local.settings.json配置

  • 强制指定自定义运行时:在Values中添加"FUNCTIONS_WORKER_RUNTIME": "custom"(Rust属于自定义运行时,非官方内置的node/python等)
  • 配置存储参数:本地开发可设置"AzureWebJobsStorage": "UseDevelopmentStorage=true",避免CLI因缺失配置跳过函数发现

4. 调整代码的端口获取逻辑

  • 不要硬编码端口,改为读取CLI传递的环境变量FUNCTIONS_CUSTOMHANDLER_PORT,示例代码:
let port = std::env::var("FUNCTIONS_CUSTOMHANDLER_PORT")
    .unwrap_or_else(|_| "3000".to_string());
let addr = format!("127.0.0.1:{}", port);

硬编码端口会导致CLI无法与你的服务建立连接,进而无法识别函数

5. 升级或重置Azure Functions CLI

  • 升级到最新版本:执行func upgrade,旧版本(如4.0.6280)可能存在自定义运行时的识别bug
  • 清理CLI缓存:删除~/.azurefunctions目录后重新启动服务,避免缓存干扰

快速验证流程

  1. 执行chmod +x azfunction确保权限
  2. 确保local.settings.json包含正确配置:
{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "custom",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true"
  }
}
  1. 确认function.json的scriptFile路径正确
  2. 重新运行func start --port 3000 --verbose,观察日志中是否出现Starting custom process with command: [你的二进制路径]的启动记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:26:03