Netlify Lambda函数:保持获取路径必须为字符串类型

时间:2019-06-30 19:30:16

标签: node.js firebase lambda google-cloud-firestore netlify

我正在使用firebase-admin来检索数据,并使用Netlify Lambda函数来调用服务。基本上就是这个。

这是我的代码:

exports.handler = (event, context, callback) => {
  const { id = "toronto" } = event.queryStringParameters;
  const cityRefs = dbInstance.collection("cities");
  console.log("req.params.id", id);

  if (id === "mumbai") {
    console.log("in here", id);
    let cityRef = cityRefs.doc("id1");
    return cityRef
      .get()
      .then(doc => {
        if (!doc.exists) {
          console.log("No such document!");
        } else {
          console.log("Document data:", doc.data());
          callback(null, {
            statusCode: 200,
            body: doc.data()
          });
        }
      })
      .catch(err => {
        console.log("Error getting document", err);
        callback(err);
      });
    }

}

我一直收到以下错误。我不确定自己做错了什么。

  

函数调用失败:TypeError [ERR_INVALID_ARG_TYPE]:“ path”参数必须为字符串类型。收到的类型编号

1 个答案:

答案 0 :(得分:2)

我知道了。之所以不起作用,是因为firebase-admin被捆绑了。因此,我使用https://www.npmjs.com/package/webpack-node-externals来捆绑firebase-admin。我将此添加到了webpack.functions.js

const nodeExternals = require("webpack-node-externals");

module.exports = {
  externals: [nodeExternals()]
};

,然后使用以下命令运行netlify lambda函数:

"start:lambda": "netlify-lambda serve src/functions --config ./webpack.functions.js"