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

fsc*_*ore 1 lambda node.js firebase netlify google-cloud-firestore

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

这是我的代码:

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);
      });
    }
Run Code Online (Sandbox Code Playgroud)

}

我不断收到以下错误。我不确定我做错了什么。

函数调用失败:类型错误 [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到的型号

fsc*_*ore 5

我想到了。它不起作用的原因是因为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()]
};
Run Code Online (Sandbox Code Playgroud)

netlify lambda使用以下命令运行该函数:

"start:lambda": "netlify-lambda serve src/functions --config ./webpack.functions.js"
Run Code Online (Sandbox Code Playgroud)