Deno 是一个现代的 JavaScript 和 TypeScript 运行时,它提供了一些内置的环境变量来帮助开发者更好地理解和控制程序的运行环境。这些环境变量可以用于配置 Deno 的行为,也可以在你的代码中用来获取关于当前运行环境的信息。
获取环境变量
在 Deno 中,你可以通过 Deno.env 对象来访问和操作环境变量。Deno.env 是一个类似于 JavaScript 的 Map 对象,因此你可以使用标准的 Map 方法来操作它。
读取环境变量
要从环境中读取一个特定的变量,你可以使用 get 方法。如果变量不存在,则返回 null。
const myVariable = Deno.env.get("MY_VARIABLE");
if (myVariable) {
console.log(`MY_VARIABLE is set to ${myVariable}`);
} else {
console.log("MY_VARIABLE is not set.");
}设置环境变量
虽然在大多数情况下你不能修改环境变量(因为它们通常是由操作系统或其他外部程序设置的),但你可以在脚本内部临时地为当前进程设置环境变量。这可以通过 set 方法完成。
Deno.env.set("TEMP_VARIABLE", "some value");
console.log(Deno.env.get("TEMP_VARIABLE")); // 输出: some value请注意,这种修改只对当前进程有效,并不会影响到父进程或子进程。
删除环境变量
如果你想删除一个环境变量,可以使用 delete 方法。同样地,这个操作也仅限于当前进程。
Deno.env.set("TEMP_VARIABLE", "some value");
console.log(Deno.env.get("TEMP_VARIABLE")); // 输出: some value
Deno.env.delete("TEMP_VARIABLE");
console.log(Deno.env.get("TEMP_VARIABLE")); // 输出: null使用环境变量进行配置
环境变量非常适合用来配置应用程序的行为,尤其是在开发、测试和生产环境中使用不同的配置时。例如,你可以根据环境变量来决定是否启用某些功能或更改日志级别。
const logLevel = Deno.env.get("LOG_LEVEL") || "info";
console.log(`Log level is set to ${logLevel}`);
if (logLevel === "debug") {
console.debug("This is a debug message.");
}安全性考虑
由于环境变量可能包含敏感信息(如API密钥或密码),因此在使用它们时需要注意安全性。避免将敏感信息硬编码到代码中,并尽量使用环境变量来管理这些信息。
隐藏敏感数据
在实际部署应用时,应确保环境变量中的敏感数据不被泄露。这可以通过使用 .env 文件并将其添加到 .gitignore 来实现,这样敏感数据就不会被提交到版本控制系统中。
# .env 文件示例 DB_PASSWORD=supersecretpassword API_KEY=mysecretapikey
然后,在启动你的Deno应用程序之前,你可以加载这些环境变量:
source .env deno run --allow-env app.ts
或者,如果你正在使用 Deno 1.16+,可以直接在命令行中指定环境变量:
DENO_ENV_FILE=./.env deno run --allow-env app.ts
通过这种方式,你可以更安全地管理和使用环境变量,同时保持代码的整洁和可维护性。