首页 > 解决方案 > Firebase 函数:TypeError:无法读取未定义的属性“替换”

问题描述

我正在尝试按照 Aaron Klasner 在 Hackernoon 上的教程来创建一个 Medium 提要以做出反应。

为了在本地进行测试,我需要绕过 Medium 用来阻止本地请求的 CORB。

我构建了一个 firebase 函数,但出现以下错误:

TypeError: Cannot read property 'replace' of undefined
at strip (/user_code/index.js:18:37)
at Request.request [as _callback] (/user_code/index.js:19:25)
at self.callback (/user_code/node_modules/request/request.js:185:22)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at Request.onRequestError (/user_code/node_modules/request/request.js:881:8)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:188:7)
at TLSSocket.socketErrorListener (_http_client.js:324:9)
at emitOne (events.js:96:13)

这是我从教程中获得的 firebase 函数:

const functions = require('firebase-functions');
var request = require('request');
exports.medium = functions.https.onRequest((req, res) => {
  if(!req.query.username) {
    return res.status(400).send('Error: You need to include query param ?username=@yourUsername');
  }
  const url = `https://medium.com/${req.query.username}/latest?format=json`;
  return request(url,(error, response, body) => {
    const prefix = `])}while(1);</x>`
    const strip = payload => payload.replace(prefix, ``)
    res.send(JSON.parse(strip(body)));
  });
})

这里也是教程的链接:https ://hackernoon.com/import-your-medium-feed-into-react-ceadbaf785c7

标签: javascriptreactjsfirebase

解决方案


你得到的错误是由 body being 引起的undefined,所以在发回响应之前尝试检查错误:

 return request(url,(error, response, body) => {
    if (error) {
        return console.error('Failed to fetch data: ', error);
    }
    const prefix = '])}while(1);</x>';
    const strip = (payload) => payload.replace(prefix, '');
    res.send(JSON.parse(strip(body)));
  });

检查请求文档


推荐阅读