Firebase 函数 - FirebaseError:在非交互模式下运行时缺少必需的选项(强制)

str*_*ies 5 node.js firebase google-cloud-functions google-cloud-firestore firebase-cli

我有一个 Firebase 函数,当用户的帐户被删除时,它会删除 Firestore 数据库中用户的集合。

const firebase_tools = require("firebase-tools");
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();

exports.deleteUser = functions.auth.user().onDelete((user) => {
  return firebase_tools.firestore
      .delete(`users/${user.uid}`, {
        project: process.env.GCLOUD_PROJECT,
        token: functions.config().fb.token,
        recursive: true,
        yes: true
      }).catch((error) => {
        console.log(error);
        throw new functions.https.HttpsError(
            "unknown",
            "Error deleting user's data"
        );
      });
});
Run Code Online (Sandbox Code Playgroud)

每当删除用户并执行该函数时,我都会在函数日志中收到以下错误。

FirebaseError: Missing required options (force) while running in non-interactive mode
    at prompt (/workspace/node_modules/firebase-tools/lib/prompt.js:16:15)
    at promptOnce (/workspace/node_modules/firebase-tools/lib/prompt.js:29:11)
    at Command.actionFn (/workspace/node_modules/firebase-tools/lib/commands/firestore-delete.js:69:51)
    at Object.delete (/workspace/node_modules/firebase-tools/lib/command.js:190:25)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
Run Code Online (Sandbox Code Playgroud)

我能找到的与此相关的唯一信息是有关将功能部署/删除到 Firebase 的信息,并且我找不到太多有关 firebase-tools 的文档。

小智 10

将 force: true 添加到传递给 firebase-tools 的 JSON。为我工作版本 10.1.4

{
        project: process.env.GCLOUD_PROJECT,
        token: functions.config().fb.token,
        recursive: true,
        yes: true,
        force: true // add this
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*y B 1

我已经重现了您遇到的错误。

错误

此错误发生在最新的"firebase-tools": "^10.1.3".

基于使用可调用云函数删除数据,该文档包含仍然使用的示例代码"firebase-tools": "9.18.0"。您可以firebase-tools通过修改package.json. 例如下面:

  "dependencies": {
    "firebase": "^9.6.5",
    "firebase-admin": "^9.12.0",
    "firebase-functions": "^3.16.0",
    "firebase-tools": "9.18.0"
  }
Run Code Online (Sandbox Code Playgroud)

降级后,我可以成功删除指定的文档。 在职的

您还可以使用@Renaud Tarnec 通过使用Admin SDK回答的内容。例如下面:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();

db = admin.firestore();

exports.deleteUser = functions.auth.user().onDelete((user) => {
    db.collection("users").doc(user.uid).delete()
      .then(function(user) {
        console.log("Successfully Deleted User:", user.uid)
        })
      .catch((error) => {
        console.log(error);
        throw new functions.https.HttpsError(
            "unknown",
            "Error deleting user's data"
        );
      });
});
Run Code Online (Sandbox Code Playgroud)