关于环境变量的那些事

各位在构建 Node.js 应用程序的流程一般都是本地开发,然后在内部公司服务器,云服务器或容器内部(可能使用 Docker)来进行部署上线。

在很久很久以前,大家就开始使用环境变量来进行参数传递了,通过环境变量的切换,应用可以以不同的方式运行起来,不管你需要什么配置,都可以通过环境变量进行传输,甚至是非常大段的文本,看起来很简单,也很优雅。

今天这篇文章就介绍了基础的环境变量的用法,以及如何用环境变量来让应用可以在不同的地方运行。

如果你的应用还没用到环境变量?那么,一定得看一看这一篇文章,虽然基础,但是很实用。

其实在 Node.js 应用中,环境变量是必不可少的一部分,大多数 Node.js 应用会拿它做一些羞羞的事情。如果你想不到它能做什么,那么,告诉你一个口诀 ”任何需要根据环境改变的地方都应该使用环境变量“,虽然配置或者其他工具也能达到同样的效果,相信我,环境变量才是实践到现在最方便可靠的选择。

各位大佬比较常用的地方有:

1、启动的参数,咱们内部经常用来获取端口 PORT 的部分

2、一些启动以来的文件夹,敏感的路径等

3、环境,判断应用启动所在的地方

4、一些不为人知的秘密,啊,是密码

5、调试信息,比如 DEBUG=***

这些都是基本的场景,我们来看看是怎么用的。

使用环境变量

很常见的,用户可能正在为 Express/koa 服务器设置端口号。一般来说,会有在不同环境中区分端口的需求(例如,分段,测试,生产)并避免与其他应用程序冲突。

但是在开发过程中,其实不怎么关心,这都是部署的事情。以下是如何在代码中使用环境变量来获取端口的方法。

// server.js

constport=process.env.PORT;

console.log(`Your port is ${port}`);

通过来获取环境变量是非常常见的用法,这个时候,我们可以通过下面的代码来传入这个值,这样,这个值就是由外部控制,而不是硬编码了。

PORT=8626nodeserver.js

如果你需要传递多个环境变量,可以通过空格来进行区分。

PORT=8626NODE_ENV=developmentnodeserver.js

使用文件管理

当你的环境变量变多了之后,可以使用例如这类模块来读取你的环境变量。

比如创建一个文件,记得千万不要提交到服务器(否则会被版本控制记录下来),里面的内容则是你的环境变量。

NODE_ENV=development

PORT=8626

# Set your database/API connection information here

API_KEY=**************************

API_URL=**************************

安装模块自然是必不可少的。

npm i dotenv --save

安装完之后自然是如何读取这些环境变量了,你可以通过下面的示例代码获取。

// server.js

console.log(`Your port is ${process.env.PORT}`);// undefined

constdotenv=require('dotenv');

dotenv.config();

console.log(`Your port is ${process.env.PORT}`);// 8626

最开始代码显示 PORT 环境变量的初始值,这个值将是 undefined 的。然后它需要依赖 dotenv 包并执行其配置功能,该功能读取文件并设置环境变量。最后代码就能通过和之前一样的方式读取到环境端口了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181121B1FHF300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券