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

Azure Functions 4.0 JavaScript Service Bus触发器配置报错求助

问题分析与修复方案

核心错误原因

你的代码存在两个关键问题:

  1. connection参数配置错误:你直接传入了Service Bus命名空间的FQDN,但该参数需要的是配置文件中连接字符串的名称,而非命名空间地址或连接字符串本身。
  2. 缺少订阅名称参数:Service Bus主题触发器必须指定subscriptionName,因为主题消息只能通过订阅接收,无订阅则无法触发函数。

另外,错误中提到的function.json是Azure Functions 4.0编程模型自动生成的,无需手动创建,但配置错误会导致系统无法正确生成该文件,从而抛出异常。

修复步骤

1. 修改函数代码

调整app.serviceBusTopic的配置,补充订阅名称,并将connection改为配置项名称:

const { app } = require('@azure/functions');

const topicName = "my-topic";
const subscriptionName = "my-subscription"; // 指定你的订阅名称,需提前在Azure Portal创建

app.serviceBusTopic('serviceBusQueueTrigger1', {
    topicName: topicName,
    subscriptionName: subscriptionName, // 新增订阅名称参数
    connection: "SERVICEBUS_CONNECTION_STRING", // 改为配置项名称,而非FQDN
    handler: (message, context) => {
        context.log('message:', message);
    },
});

2. 配置本地连接字符串

在项目根目录的local.settings.json文件中添加Service Bus连接字符串(无此文件则直接创建):

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "SERVICEBUS_CONNECTION_STRING": "Endpoint=sb://this-is-my-service-bus-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=你的密钥"
  }
}

注意:SERVICEBUS_CONNECTION_STRING的值需从Azure Portal的Service Bus命名空间“共享访问策略”中复制主连接字符串。

3. 确认订阅存在

确保你已在Azure Portal的Service Bus主题my-topic下,创建了名为my-subscription的订阅,否则函数无法接收主题消息。

验证修复

重新启动函数,当Service Bus主题有新消息发送到对应订阅时,函数会被触发并打印消息内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 07:27:33