Firebase Admin SDK ERROR: Выражение имеет тип `void`.Поместите его на отдельной строке как утверждение - PullRequest
0 голосов
/ 12 мая 2018

Я следую этому примеру из firebase.https://firebase.google.com/docs/functions/get-started

Я только что загрузил все необходимые API и начал изучать.

Я создаю функции с помощью TypeScript, этот "Hello World" https://github.com/firebase/functions-samples/blob/master/typescript-getting-started/functions/src/index.ts сработалхорошо.

Но "addMessage ()" не сделал.

exports.addMessage = functions.https.onRequest((req, res) => {
  const original = req.query.text;
  return admin.database().ref('/messages').push({original: original}).then((snapshot) => {
    return res.redirect(303, snapshot.ref.toString());
  });
});

Выдает это сообщение об ошибке:

Firebase Admin SDK ОШИБКА: выражение имеет тип void.Поместите его на отдельной строке как утверждение

1 Ответ

0 голосов
/ 27 сентября 2018

Это немного поздно, но в случае, если другие столкнутся с этой проблемой, проблема в том, что res.redirect не возвращает значение, поэтому его тип возврата определяется как void.

Ошибка в том, что оператор return ожидает значение. Вы не можете вернуть void. Таким образом, компилятор TypeScript просматривает return res.redirect(303, snapshot.ref.toString()); как return void, что и вызывает ошибку.

Решение состоит в том, чтобы поместить возврат в следующую строку:

res.redirect(303, snapshot.ref.toString());
return;

К сожалению, несмотря на то, что это недопустимый TypeScript, рекомендуется всегда ставить возврат перед кодом, который завершает ответ, чтобы он не выпадал из остального кода в функции.

Помещение возврата на следующую строку легко забыть, и его легко пропустить при сканировании кода. При возврате с окончанием ответа становится ясно, что обработка завершена.

Вы можете отключить это, отключив правило linting no-void-expression, но это не рекомендуется, так как в целом это полезное правило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...