【问题标题】:Firebase Functions: Random 404'sFirebase 功能:随机 404
【发布时间】:2021-01-24 20:43:39
【问题描述】:

我在服务器上使用 firebase 函数进行 API 调用。 70% 的情况下一切正常,但突然之间我的一些函数调用开始无法执行,给我的 API 一个 404,并且在接下来的几个小时内无法工作。

在我的 StackDriver 中,我可以看到在我尝试时没有再次调用该函数。我的 API 只是给了我一个 404 却没有到达服务器。

以下是偶尔失败的调用之一。转到我正在获取的 URL,GET 结果总是出现,所以我不知道问题是什么。

API 调用:

const getCreators = () => {
  return window
    .fetch(url + '/get-creators', {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
      },
    })
    .then((res) => {
      console.log(res);
      if (res.status === 200) {
        return res.json();
      } else {
        return null;
      }
    })
    .then((data) => {
      if (!data || data.error) {
        return null;
      } else {
        return data;
      }
    });
};

服务器代码:

const app = express();

  app.get('/get-creators', async (req, res) => {
    console.log('creators: ');
    creators
      .find()
      .toArray()
      .then((result) => {
        console.log(result);
        res.status(200).send(result);
      })
      .catch(() => {
        console.log('error');
        res.send('error');
      });
  });

app.listen(4242, () => console.log(`Node server listening at https ${4242}!`));

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

【问题讨论】:

  • 如果请求没有到达服务器,为什么响应是 404?通常,如果网络请求未到达服务器,则会出现网络错误。如果您收到响应(即使是错误响应),您已经到达服务器。
  • @3limin4t0r 这就是我的想法,这没有任何意义。它可能正在尝试在本地搜索,但将我的结果记录在 api 中它具有正确的 url 作为尝试到达。
  • @3limin4t0r 找到了答案。服务器偶尔在本地听每个人,而不是告诉我。不过谢谢!

标签: javascript firebase google-cloud-platform google-cloud-functions


【解决方案1】:

找到了。您不希望在您的服务器上使用以下代码:

app.listen(4242, () => console.log(`Node server listening at https ${4242}!`));

我将这段代码注释掉,重新发布,一切都很好。

我认为这样做并没有什么不同,但显然它可以并且会尝试让服务器在本地监听,这给了我一个 404。

【讨论】:

  • 我很高兴你找到了你的解决方案,但这个答案并没有真正解释很多。代码块是怎么回事?你添加了那个代码?去掉它?更改?添加之前和之后将有助于为未来的读者解释。通常,您可以通过首先查看问题中的代码来了解发生了什么变化,但是找不到此行。
  • @3limin4t0r 我同意,现在更新它以使其更清晰。谢谢!
猜你喜欢
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2018-08-07
  • 1970-01-01
  • 2015-04-01
  • 2017-04-08
相关资源
最近更新 更多