Ожидаемый catch () или return [обещание / поймать или вернуть], и каждый then () должен вернуть значение или бросить [обещание / всегда возвращать] - PullRequest
0 голосов
/ 02 февраля 2019

Я получаю две ошибки в строках 11 и 12. что

Ожидаемый catch () или return [обещание / поймать или вернуть], и каждый then () должен вернуть значение или бросить[обещание / всегда возвращение]

Я пытаюсь развернуть API ExpressJS на хостинге Firebase

const functions = require('firebase-functions');
const express = require('express');
const app = express();


app.get('/api', (req, res) => {
    var qu = req.param('q');
    const DuckDuckScrape = require("duck-duck-scrape");
const ddg = new DuckDuckScrape();
    var search = ddg.search(qu, -1, "en-us");
    search.then((data) => {
        res.send(data)
      }) ;  


  });

  exports.app = functions.https.onRequest(app);

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 03 февраля 2019

Это похоже на ошибку какой-то программы lint, а не реального интерпретатора Javascript.Если это так, то вы, вероятно, можете порадовать линтера этим:

const functions = require('firebase-functions');
const express = require('express');
const app = express();
const DuckDuckScrape = require("duck-duck-scrape");


app.get('/api', (req, res) => {
    const qu = req.param('q');
    const ddg = new DuckDuckScrape();
    ddg.search(qu, -1, "en-us").then(data => {
        res.send(data);
    }).catch(e => {
        console.log(e);
        res.sendStatus(500);
    });
  });

  exports.app = functions.https.onRequest(app);

Это покрывает пару возможных проблем с линтом.Во-первых, есть .catch(), поэтому отсутствует обработка ошибок.Во-вторых, не осталось никаких обещаний, что линтер думает, что вы могли бы использовать позже, и поэтому он жалуется на отсутствие возвращаемого значения из .then().

Если вы все еще получите второе предупреждение, я, вероятно, найдуКонфигурирование и отключите это предупреждение, потому что здесь оно переусердствует, так как не нужно возвращать значение из .then(), но вы также можете просто добавить return null; или изменить на return res.send(data), если вы действительно хотите, чтобы предупреждение исчезло.Лично я не добавляю ненужный код только для того, чтобы нерелевантные предупреждения о потерях пошли своим чередом.Я бы лучше отключил ошибочное предупреждение.

...