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

Netlify Lambda functions: keep getting path must be of type string

我正在使用 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);
      });
    }

}

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

Function invocation failed: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type number

我明白了。它不起作用的原因是 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"