winglang/wing

Confusion around `util.env` and `util.tryEnv` in preflight vs inflight contexts

Open

#4,601 建立於 2023年10月19日

在 GitHub 查看
 (7 留言) (0 反應) (0 負責人)TypeScript (214 fork)github user discovery
good first issue🎨 sdk🐶 dogfood

倉庫指標

Star
 (5,385 star)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

The util.env and util.tryEnv utilities work differently in preflight and inflight contexts.

Given the following example:

MY_VAR=123 wing compile main.w

// main.w
bring cloud;
bring util;

log(util.env("MY_VAR")); // Logs 123
let MY_VAR = util.env("MY_VAR");

new cloud.Function(inflight () => {
  log(util.tryEnv("MY_VAR") ?? "<no value>"); // Logs <no value>
  log(MY_VAR); // Logs 123
});

The Cloud Function util.tryEnv is being translated into a lookup to process.env rather than use the host's environment variables. I find this behaviour confusing, maybe even unnecessary. Do we need to access environment variables in inflight functions? The only environment variables we can specify are when invoking the Wing CLI.

IMO, log(util.tryEnv("MY_VAR") ?? "<no value>"); should log 123 as well, with the actual inflight code being inlined as log("123" ?? "<no value>"); (it could even be simplified to log("123")).

貢獻者指南