【发布时间】:2023-03-11 08:45:02
【问题描述】:
我需要从 Firebase 云函数连接到 BigQuery 并存储一些数据。 BigQuery 位于另一个 Google 项目中,因此我想使用带有主键的 .json 文件。 不幸的是,我的解决方案不起作用。
我有以下代码:
'use strict';
const functions = require('firebase-functions');
const bigquery = require('@google-cloud/bigquery');
const path = require("path");
exports.testBigQuery = functions.https.onRequest((request, response) => {
var bigqueryClient = bigquery({
projectId: '(project name)',
keyFilename: path.join(__dirname,'bigQuery.json')
});
const dataset = bigqueryClient.dataset("mat");
const table = dataset.table("meraki_data");
function insertHandler(err, apiResponse) {
if (err) {
response.send({err : err, response : apiResponse});
} else {
response.send({err : "No error", response : apiResponse});
}
}
table.insert({
ap_mac: "TESTsfsadfads",
rssi: 1,
is_associated: false,
client_mac: "TEST"
}, insertHandler);
});
在函数调用之后(我使用 Postman),我得到以下响应:
{
"err": {
"code": "MODULE_NOT_FOUND"
}
}
使用 node.js 在我的本地机器上运行这个脚本效果很好。
我哪里错了?
【问题讨论】:
-
请使用
nodejs引擎、firebase-admin、firebase-functions的版本进行更新。我建议你使用nodejs v10。检查package.json中是否有最新版本,然后删除node_modules,运行npm install。检查来自Upgrade to v1.0+ from beta 的所有步骤。更新和安装后(包括firebase-tools),然后重新部署firebase deploy。最后但并非最不重要的一点是,检查所有require文件是否具有正确的名称/路径并存在(bigQuery.json);还要检查入口文件的名称必须是index.js。
标签: node.js firebase google-bigquery google-cloud-functions