缺少记录字段:IngressServiceBackend

问题描述

我在尝试将 Dhall 用于 Kubernetes 时收到一条奇怪的错误消息,我不明白。这是我的配置:

let k8s = ./k8s.dhall

let utils = ./utils.dhall

let Env = utils.Env

in  \(env : Env) ->
      k8s.Ingress::{,Metadata = k8s.ObjectMeta::{,name = Some "my-ingress",annotations = Some
          [ { mapKey = "kubernetes.io/ingress.global-static-ip-name",mapValue = "my-ip"
            }
          ]
        },spec = Some k8s.Ingressspec::{,defaultBackend = Some k8s.IngressBackend::{,service = Some k8s.IngressServiceBackend::{,name = "my-Nginx",port = Some k8s.ServiceBackendPort::{ number = Some 71742 }
            }
          }
        }
      }

这里是错误信息:

↳ ./ingress.dhall

Error: Missing record field: IngressServiceBackend

19│                            k8s.IngressServiceBackend

/Users/damd/Code/proj/ingress.dhall:19:28

23│                    ./ingress.dhall

./proj.dhall:23:20

所以在我看来它在 IngressServiceBackend 中找不到 k8s?但是,k8s 被定义为 https://raw.githubusercontent.com/dhall-lang/dhall-kubernetes/master/1.19/package.dhall,当我手动浏览该 URL 时,我可以看到它在那里。

有什么想法吗?

解决方法

清除我的 Dhall 缓存似乎解决了这个问题。不知道发生了什么。

$ rm -rf ~/.cache/dhall*

希望这对其他人有帮助。