Web 抓取教程:参数类型未知不能分配给参数类型 BasicAcceptedElems<AnyNode> |字符串 |未定义

问题描述 投票:0回答:0

我正在按照 NodeJS 教程进行网络抓取,当我将鼠标悬停在箭头函数中的元素上时,我收到以下警告。

`未知参数类型不可分配给参数类型 BasicAcceptedElems |字符串 |未定义

类型未知不能分配给类型 Cheerio | (文档 | 元素 | CDATA | 文本 | 评论 | ProcessingInstruction)[] |字符串 |文档 |元素 |数据 |文字 |评论 |处理指令`

这是我的代码,完全按照课程所示编写:

const request = require("request-promise");
const cheerio = require("cheerio");

const fs = require("fs"); // save a file


async function main() {
    const html = await request.get("https://reactnativetutorial.net/css-selectors/");
    fs.writeFileSync("./test.html", html);
    let $ = await cheerio.load(html);
    $("h2").each((index, element) => {
        console.log($(element));
    })
}

main();

正在使用的网站只是非常基本的 HTML。

我在 IntelliJ IDE 中执行此操作。我的输出中没有出现任何错误,如果我改为尝试拉取单个 HTML 标记,我也能够成功获得输出。出于某种原因,我只是遇到了 .each() 的问题。

我已经尝试用几种不同的方式重写 .each 函数来删除错误行,但我仍然没有得到任何输出。我还尝试使用 Typescript 看看我是否可以给所有类型,但这只是打开了一堆其他问题并且比我需要的更混乱。

Cheerio 几乎以相同的方式编写了一个 .each() 函数,所以我现在不确定该去哪里。

Cheerio's use of .each()

node.js web-scraping intellij-idea typeerror each
© www.soinside.com 2019 - 2024. All rights reserved.