【问题标题】:Cloud Functions for Firebase: accessing BigQuery not workingCloud Functions for Firebase:无法访问 BigQuery
【发布时间】: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-adminfirebase-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


【解决方案1】:

我 90% 确定这意味着缺少依赖包。检查 package.json 以确保那里有所有依赖包。在本地删除您的 node_modules 文件夹和 npm install --production 以重新安装所有内容,就像谷歌尝试安装它一样。然后再次在本地运行。

【讨论】:

    猜你喜欢
    • 2020-02-01
    • 2017-08-24
    • 2017-09-24
    • 2018-11-23
    • 2017-11-03
    • 2017-09-07
    • 2018-01-03
    • 2022-12-01
    • 2017-10-09
    相关资源
    最近更新 更多