Bicep 诊断代码 - BCP401

当使用表达式定义资源主体时会出现此诊断,因为 Spread 运算符会转换为函数。 这是 JSON 中的一种限制。

说明

在此位置不允许使用扩展运算符“...”。

Level

错误

示例

以下示例会引发诊断,因为 spread 运算符用于定义资源主体:

param location string = resourceGroup().location
param addressPrefix string = '10.0.0.0/24'
 
resource vnet 'Microsoft.Network/virtualNetworks@2024-01-01' = {
  name: 'vnetName'
  location: location
 
  ...(addressPrefix != '' ? {
    properties: {
      addressSpace: {
        addressPrefixes: [
          addressPrefix
        ]
      }
    }
  } : {})
}

可以通过在较低级别使用运算符来修复诊断:

param location string = resourceGroup().location
param addressPrefix string = '10.0.0.0/24'
 
resource vnet 'Microsoft.Network/virtualNetworks@2024-01-01' = {
  name: 'vnetName'
  location: location
 
  properties: {
    addressSpace: {
      ...(addressPrefix != '' ? {
        addressPrefixes: [
          addressPrefix
        ]        
      } : {})
    }
  }
}

后续步骤

有关 Bicep 诊断的详细信息,请参阅 Bicep 核心诊断