我正试图在本地系统上运行云函数,为此我需要设置一些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
- 将env cmd安装为dev-dependendy
npm i env-cmd --save-dev
- 更新
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"
}
}
- 在根目录中创建
.env
ENV_VARIABLE_HAHA="hahahah"
ENV_VARIABLE_FOO="fooo"
- 在
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);
}
}