gpt4 book ai didi

node.js - 在 Google Cloud Function 中设置环境变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:43 26 4
gpt4 key购买 nike

我正在构建一个小型 node.js 应用程序,它接受 POST 请求并将数据上传到 Google BigQuery。

BigQuery 需要设置 GOOGLE_APPLICATION_CREDENTIALS,否则 BigQuery 将超时。正如这里所解释的:https://cloud.google.com/docs/authentication/production

例如,在服务器启动时进行查询,如下所示:

GOOGLE_APPLICATION_CREDENTIALS=path/to/credentials.json DEBUG=* bin/www

在服务器启动时进行查询,如下所示会产生超时:

DEBUG=* bin/www

我尝试了以下 npm 包来在脚本中设置环境变量:

"envs": "0.1.6",
"dotenv": "5.0.1"

并将它们设置为:

var envs = require('envs');
app.set('environment', envs('GOOGLE_APPLICATION_CREDENTIALS', 'path/to/credentials.json'));

require('dotenv').config()

可惜...

Google Cloud 函数不允许我指定任何环境变量,脚本部署逻辑全部在幕后。我尝试在 Google Cloud Console 中找到配置文件,并考虑将其设置为全局环境变量,但我什至无法在该控制台中找到它。

有什么想法吗?

最佳答案

编辑 2018 年 8 月 14 日

没有设置环境变量的选项,但现在可以在测试模式下使用。只需在部署时使用下一个命令:

cloud beta functions deploy YOUR_FUNCTION_NAME --set-env-vars VAR1=foo,VAR2=bar FLAGS

编辑 2018 年 11 月 22 日(根据 Martin Omander 的建议)

如果这对您有意义,您还可以从您的 node.js 代码中设置它们: process.env.MY_VARIABLE = "it_works"

旧答案(解决与环境变量无关的实际问题)

不幸的是,与 AWS Lambda SCF 不同的是,它不支持设置环境变量,至少以某种明显的方式。

但就你而言,你实际上不需要它。您需要在本地环境上使用 GOOGLE_APPLICATION_CREDENTIALS 进行测试,但在 Google Cloud 功能上,如果您使用 BigQuery npm,只需设置项目 ID 就足够了

const BigQuery = require('@google-cloud/bigquery');

const projectId = 'project-id';

exports.testBigQuery = (req, res) => {

const bigquery = new BigQuery({
projectId: projectId,
});


bigquery
.createDataset('test_set')
.then(results => {
const dataset = results[0];
res.send(dataset.id);
})
.catch(err => {
console.error('ERROR:', err);
});
};

关于node.js - 在 Google Cloud Function 中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50564262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com