如何在谷歌云功能的本地开发中设置env变量



我正试图在本地系统上运行云函数,为此我需要设置一些env变量。我正在关注env和本地开发文档的文档。

我正试图通过以下命令运行我的项目:

node node_modules/@google-cloud/functions-framework --target=syncingredients --env-vars-file=.env.yaml

我的.env.yaml的样子:

API_KEY: key
AUTH_DOMAIN: project.firebaseapp.com

函数框架似乎不支持--env-vars文件(https://github.com/GoogleCloudPlatform/functions-framework-nodejs/issues/38)

我推荐relymd-djk建议的解决方法:

预请求:

npm install env-cmd 
npm install yaml2json

使用修改package.json脚本部分

"scripts": {
"start":"yaml2json .env.yaml >.env.json && env-cmd -r ./.env.json functions-framework --target=syncingredients",
"deploy": "gcloud functions deploy myFunction --entry-point syncingredients  --trigger-http --runtime nodejs16  --env-vars-file ./.env.yaml"
}

运行功能:

npm start

感谢ClumsPuffin强调它不是一个可用的功能,所以我选择了dotenv

将文件更改为.env:

API_KEY="key"
AUTH_DOMAIN="project.firebaseapp.com"

并使用以下命令在本地运行功能

node -r dotenv/config node_modules/@google-cloud/functions-framework --target=syncingredients

作为参考,这个链接帮助我实现了它,我在这个链接中利用了脚本之上的env cmd。:

npm install env-cmd --save-dev  

然后在脚本中,我能够在函数之前提供.env文件,即我使用的框架部分:

env-cmd -r ./.env

全工作:

env-cmd -r ./.env node --inspect  node_modules/.bin/functions-framework --source=dist/ --target=testFunction
  1. 将env cmd安装为dev-dependendy
npm i env-cmd --save-dev
  1. 更新package.json
{
"name": "google-cloud-function",
"version": "0.0.1",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0",
},
"scripts": {
"start": "env-cmd functions-framework --target=googleCloudFunction"
},
"devDependencies": {
"env-cmd": "^10.1.0"
}
}
  1. 在根目录中创建.env
ENV_VARIABLE_HAHA="hahahah"
ENV_VARIABLE_FOO="fooo"
  1. index.js
'use strict';
console.log(process.env);
exports.googleCloudFunction= async (req, res) => {
console.info('googleCloudFunction started...');
try {
const {ENV_VARIABLE_HAHA, ENV_VARIABLE_FOO} = process.env;
console.log(ENV_VARIABLE_HAHA, ENV_VARIABLE_FOO);
console.info('googleCloudFunction finished.');
res.status(200).send(process.env);
} catch (err) {
console.error(err.message);
console.error('googleCloudFunctionfailed.');
res.status(500).send(err.message);
}
}

相关内容

  • 没有找到相关文章

最新更新