代码之家  ›  专栏  ›  技术社区  ›  Thomas Schreiter

serviceBusTrigger未在Azure函数中注册Javascript错误

  •  3
  • Thomas Schreiter  · 技术社区  · 6 年前

    我正在尝试创建一个函数,该函数在Azure Service Bus订阅中的消息可用时触发。我遵循了 official docs

    通过在本地运行应用程序 func host start 导致以下错误:“ServiceBusTriggerJS: 绑定类型“serviceBusTrigger”未注册。请确保类型正确,并且安装了绑定扩展。 “”

    我的设置:

    package.json 包含azure节点模块: "azure": "^2.2.1-preview" .节点版本为8.11。

    function.json 如示例所示:

    {
      "disabled": false,
      "bindings": [
        {
          "topicName": "myTopic",
          "subscriptionName": "mySubscription",
          "connection": "MyServiceBus",
          "name": "myQueueItem",
          "type": "serviceBusTrigger",
          "direction": "in"
        }
      ]
    }
    

    local.settings.json 包含到服务总线的连接字符串和本地运行所需的存储帐户:

    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=...",
        "MyServiceBus": "Endpoint=sb://...servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=..."
      }
    }
    

    index.js 也与示例相同:

    module.exports = function (context, myQueueItem) {
        context.log('JavaScript queue trigger function processed work item', myQueueItem);
        context.done();
    };
    

    编辑 :这与此问题类似: The binding type 'serviceBusTrigger' is not registered error in azure functions c# with core tools 2 .问题(因此解决方案)是相同的。我在这里直接找到了答案并付诸实施。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Jerry Liu Phantom    6 年前

    您应该使用安装servicebus扩展

    func extensions install --package Microsoft.Azure.WebJobs.ServiceBus --version 3.0.0-beta5

    扩展用于注册servicebus触发器,使触发器可由本地函数运行时识别。它就像是对运行时的补充,所以使用哪种语言无关紧要。

    一切都对我有利(js功能),如果您还有其他问题,请随时询问。

        2
  •  1
  •   Ali Qaryan    4 年前

    这就是我所做的 Build Azure DevOps中CI/CD管道上的Azure函数服务总线队列触发器(在Node.Js中): 在将此功能部署到azure之后将其添加到以下步骤之前,我得到 serviceBusTrigger is not registered 错误:

    - script: 'func extensions install --package Microsoft.Azure.WebJobs.ServiceBus --version 3.0.0-beta8'
       displayName: 'install servicebus extension'
    
    - script: 'func extensions install --package Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator --version 1.0.1'
      displayName: 'install azure WebJobs ExtensionsMetadataGenerator'
    
    
    

    但在添加了如下所示的步骤之后,它工作得很好。 我在Azure DevOps构建管道上使用了这个YAML,它对我很有用:

    pool:
      vmImage: windows-2019
      demands: npm
    
    steps:
    - script: 'func extensions install --package Microsoft.Azure.WebJobs.ServiceBus --version 3.0.0-beta8'
       displayName: 'install servicebus extension'
    
    - script: 'func extensions install --package Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator --version 1.0.1'
      displayName: 'install azure WebJobs ExtensionsMetadataGenerator'
    
    - task: NodeTool@0
      inputs:
        versionSpec: '10.x'
    
    - task: Npm@1
      displayName: 'npm install'
      inputs:
        command: install
    
    - task: Npm@1
      displayName: 'npm az core tools'
      inputs:
        command: custom
        verbose: false
        customCommand: 'i -g azure-functions-core-tools@core --unsafe-perm t'
    
    - task: PublishTestResults@2
      inputs:
        testResultsFiles: '**/TEST-RESULTS.xml'
        testRunTitle: 'Test results for JavaScript'
      condition: succeededOrFailed()
    
    - task: ArchiveFiles@2
      inputs:
        rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
        includeRootFolder: false
        archiveFile: "$(System.DefaultWorkingDirectory)/FunctionApp.zip"
    
    - task: CopyFiles@2
      inputs:
        SourceFolder: '$(System.DefaultWorkingDirectory)'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: "$(Build.ArtifactStagingDirectory)"
        ArtifactName: "drop"