「这是我参与2022首次更文挑战的第19天,活动详情查看:2022首次更文挑战」。
环境变量是 Node 开发的基本组成部分,但出于某种原因,我从来没有费心学习如何正确使用它们。
在终端中使用
你可以在终端上传递环境变量作为 Node 进程的一部分。例如,如果你正在运行一个 Express 应用程序并想传入端口,你可以这样做......
PORT=65534 node bin/www
有趣的事实:端口 65535 是可用的最大 TCP/IP 网络值。参考 StackOverflow。对于网络应用程序,你只能使用截止到 65534 的端口,因为这是 Chrome 将连接到的最高端口。
在代码中使用变量,你可以用process.env对象。
var port = process.env.PORT;
如果你有一个连接字符串,你可能不想开始在终端上传递多个变量。
PORT=65534
DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb"
SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"
这些代码看起来有些难以维护。
所以让我们看看另一种方式:.env 文件。
使用 .env 文件
.env 文件允许你将环境变量放入文件中。你只需在项目中创建一个名为的新文件.env,然后将变量放在不同的行上。
PORT=65534
DB_CONN="mongodb://react-cosmos-db:swQOhAsVjfHx3Q9VXh29T9U8xQNVGQ78lEQaL6yMNq3rOSA1WhUXHTOcmDf38Q8rg14NHtQLcUuMA==@react-cosmos-db.documents.azure.com:10255/?ssl=true&replicaSet=globaldb"
SECRET_KEY="b6264fca-8adf-457f-a94f-5a4b0d1ca2b9"
要读取这些值,有几个选项,但最简单的是使用dotenvnpm 中的包。
npm install dotenv --save
然后,你只需在项目中需要使用环境变量的任何地方都需要该包。该dotenv包将获取该文件并将这些设置加载到 Node.js 中。
Use dotenv to read .env vars into Node
require('dotenv').config();
var MongoClient = require('mongodb').MongoClient;
// Reference .env vars off of the process.env object
MongoClient.connect(process.env.DB_CONN, function(err, db) {
if(!err) {
console.log("We are connected");
}
});
在 VS Code 中使用 .env 文件
首先,您可以为代码安装 DotENV 扩展,这将在您的 .env 文件中为您提供很好的语法突出显示。
DotENV - Visual
Studio 代码的 Visual Studio 市场扩展 - 支持 dotenv 文件语法
marketplace.visualstudio.com
如果你使用的是 VS Code Debugger ,VS Code Debugger 还提供了一些更方便的选项,用于从 .env 文件加载值。
VS Code 启动配置
VS Code 的 Node 调试器(已经存在,无需安装任何东西)支持通过启动配置加载 .env 文件。您可以在此处阅读有关启动配置的更多信息。
创建基本节点启动配置时(单击齿轮并选择节点),你可以执行一项或两项操作。
首先是你可以简单地在启动配置中传递变量。
这很好,但是每个值都必须是字符串这一事实让我有点困扰。它是一个数字,而不是一个字符串。JavaScript 只有 3 种类型。不要把其中一个从我身边带走。
这里有一个更简单的方法。我们已经学会了喜欢.env文件,所以我们可以给 VS Code 指定 .env 文件的名称,而不是传递它们。
只要我们从 VS Code 开始我们的流程,就会加载环境变量文件。我们不必将数字分解为字符串,也不会将毫无价值的代码部署到生产环境中。好吧,至少你不是。
从 NPM 而不是 Node 开始
可以使用 VS Code Launch 配置。你无需使用标准的节点启动流程,而是添加一个“通过 NPM start”任务的配置。
现在你可以添加回你的envFile行并调整它们,runtimeArgs以便他们启动正确的脚本。这通常类似于“开始”或“调试”。
请注意,您必须将--inspect标志添加到您的 npm 脚本中,以便 VS Code 可以附加调试器。
结论
希望你可以从中能够了解关于.env文件的知识!