Bicep 错误代码 - BCP401

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

错误说明

The spread operator "..." is not permitted in this location.

示例

以下示例会引发错误,因为 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 核心诊断