@firebase / firestore: Firestore (7.16.0): ошибка потока GRPC при подключении. Код: 1 Сообщение: 1 ОТМЕНЕНО: Операция была отменена

#javascript #node.js #firebase #google-cloud-firestore

# #javascript #node.js #firebase #google-cloud-firestore

Вопрос:

У меня есть следующий веб-хук, и он прослушивает API поставщика платежей, чтобы обновить статус заказа после того, как он «оплачен». В журналах для функций Firebase я получаю журнал консоли Payment status paid , означающий, что я правильно обновил порядок. Однако, когда я пытаюсь вызвать функцию, отвечающую за обновление Firestore, я получаю следующее:

@firebase/firestore: Firestore (7.16.0): Connection GRPC stream error. Code: 13 Message: 13 INTERNAL: Received RST_STREAM with code 2

 exports.webhooks = functions.https.onRequest(function (req, res) {
  mollieClient.payments
    .get(req.body.id)
    .then((payment) => {
      console.log("Payment status "   payment.status);

      if (payment.isPaid()) {
        updateOrderStatusPaid(req.body.id);
        return null;
      }
      return null;
    })
    .catch((error) => {
      res.send(error);
    });
  console.log("Request body "   req.body);
});

function updateOrderStatusPaid(orderId) {
  firebase
  .firestore()
  .collection("orders")
  .where("paymentId", "==", orderId)
  .update({
    status: payment.status
  })
  .then(function () {
    console.log("Success");
    return null;
  })
  .catch(function (error) {
    console.log("Error "   error);
  });
}
 

Вот мое package.json досье

 {
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "lint": "eslint .",
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "8"
  },
  "dependencies": {
    "@mollie/api-client": "^3.2.4",
    "axios": "^0.20.0",
    "cors": "^2.8.5",
    "dotenv": "^8.2.0",
    "firebase": "^7.16.0",
    "firebase-admin": "^8.10.0",
    "firebase-functions": "^3.6.1",
    "grpc": "^1.24.4"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-plugin-promise": "^4.0.1",
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}

 

Я не могу найти ничего конкретного по этой проблеме. Я уже использую Firestore на стороне своего сервера, поэтому нет никаких проблем с инициализацией Firebase. Может быть, кто-нибудь знает, в чем может быть проблема, или предложит что-то, что я должен сделать, чтобы решить эту проблему. Спасибо!

Ближайшая ссылка на эту проблему https://github.com/googleapis/nodejs-datastore/issues/679 где до сих пор нет ответа.

Комментарии:

1. Я полагаю, что эта проблема отслеживается здесь , и расследование все еще продолжается. Обновление @grpc/grpc-js может частично смягчить его.

2. @EmilGi Спасибо, я вижу в своем package-lock.json файле, что у меня @grpc/grpc-js есть версия "1.0.5" , между тем в npmjs.com последняя версия есть 1.24.4 . Я использовал команду npm i --package-lock-only для обновления своего package-lock.json файла, но вижу, что версия не изменилась. Не могли бы вы сказать мне, как его правильно обновить?

3. Вы можете указать это в своем package.json , как описано здесь .

4. @EmilGi, я включил grpc: "^1.24.4" в свои зависимости в package.json файл, запустив npm i grpc , как я понял из этой ссылки из Firebase. Я все еще получаю ту же ошибку, я считаю, что это ничего не изменило, и я уверен, что я не сделал того, что, по моему мнению, должен был сделать, чтобы решить эту проблему. Не могли бы вы в нескольких словах объяснить, как именно это сделать? ….

5. Не могли бы вы поделиться своим файлом package.json? И, пожалуйста, обратите внимание, что даже если вы установили правильную версию grpc, проблема в некоторых случаях все еще сохраняется, поскольку поток GitHub все еще открыт, и некоторые пользователи все еще сталкиваются с этим.