我有 Node JS Azure 功能,当我在本地运行时,需要设置
NODE_TLS_REJECT_UNAUTHORIZED=0
环境变量才能使我的代码正常工作。这是因为我正在连接到在我的计算机上本地运行的模拟 Cosmos DB,这需要 Node 允许自签名证书。
我只希望在本地运行时使用此环境变量设置,因为在生产中我将使用真实的(即非模拟的)Cosmos DB 实例。我不想将 和
#if debug
放入我的代码(或 Node Azure 函数的等效项)中,我希望 VS Code 项目在启动时设置环境变量。
我尝试遵循此答案建议,但是当 VS Code 启动程序时,未设置环境变量,因为我的代码中出现有关自签名证书未授权的运行时错误。我的
launch.json
看起来像这样:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Node Functions",
"type": "node",
"request": "attach",
"port": 9229,
"preLaunchTask": "func: ",
},
],
"environment": [{
"name": "NODE_TLS_REJECT_UNAUTHORIZED",
"value": "0"
}],
}
如果我使用
process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0
直接在代码中设置环境变量,一切都很好。我不知道如何让 VS Code 来设置它,或者是否可能。
请更新
"environment": [{
"name": "NODE_TLS_REJECT_UNAUTHORIZED",
"value": "0"
}],
成为
"env": {
"name": "NODE_TLS_REJECT_UNAUTHORIZED",
"value": "0"
},
另请检查替代方案。
您可以更新 package.json 脚本以在启动时添加所有环境变量,例如
"runLocal": "NODE_TLS_REJECT_UNAUTHORIZED=0 ... your start code "
或者您可以使用名为 dotenv 的第三方库
这就是它的工作原理
01-创建.env文件
02-写入所有环境变量 key=val
NODE_TLS_REJECT_UNAUTHORIZED=0
03- 更新 package.json 脚本以添加
"runLocal": "NODE_ENV=dev ... your start code "
04- 检查节点
NODE_ENV
是否等于 dev
然后加载 dotenv
05- 在节点环境是本地的情况下导入模块并调用配置函数
require('dotenv').config()