我有一个Makfile稍微修改,以帮助更好地解释 case :
include $(wildcard .env)
DB_URL=postgres://$(POSTGRES_USER):$(POSTGRES_PASSWORD)@$(POSTGRES_HOST):$(POSTGRES_PORT)/$(POSTGRES_DB)?sslmode=disable&pool_max_conns=10
test:
@echo $(DB_URL)
@cat .env
@-include .env
@echo "Running tests"
@DB=$(DB_URL) go test ./... -v -coverprofile=coverage.out
第一行显示了正在创建的正确的DB URL,因此它将按照预期导入.env
文件.第二行也起作用.第三行显示以下错误:
make: include: No such file or directory
make: [test] Error 1 (ignored)
现在,虽然我可以看到我的DB URL存在,但我不明白为什么我看不到DB中的任何东西.go test
表示DB为空字符串.如果我导出硬编码的DB URL,一切都按预期工作.
如果有人能帮我理解为什么会发生这种事就太好了.使用MacOS Sonoma.我一直在使用同一个Makefile几个星期,从来没有改变.env或Makefile,但这停止工作几个小时前.