Cloud Functions for Firebase:无法访问 BigQuery

Posted

技术标签:

【中文标题】Cloud Functions for Firebase:无法访问 BigQuery【英文标题】:Cloud Functions for Firebase: accessing BigQuery not working 【发布时间】:2017-08-15 17:50:15 【问题描述】:

我需要从 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 【参考方案1】:

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

【讨论】:

以上是关于Cloud Functions for Firebase:无法访问 BigQuery的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase Cloud Functions 测试中模拟 FCM admin.messaging().sendToDevice() 的实现

如何使用 Google Python Client for Cloud Functions 获取 Google Cloud Functions 列表?

Cloud Functions for Firebase 超时

Cloud Functions for Firebase onWrite 超时

在 Cloud Functions for Firebase 中访问 db 数据

Cloud Functions for Firebase 组织