使用 Node html 解析器时出错:错误 TS2339:类型不存在 '(TextNode & { valid: boolean; }) | (HTMLElement & { valid: boolean; })
Error while using Node html parser : error TS2339: does not exist on type '(TextNode & { valid: boolean; }) | (HTMLElement & { valid: boolean; })
我正在为我的项目抓取 网站,为此我正在使用 axios,html 解析器使用 node-html-使用这个的解析器我在解析 dom
时遇到这个错误
" Error TS2339: Property
'querySelectorAll' does not exist on type '(TextNode & { valid: boolean; }) | (HTMLElement & { valid: boolean; })' "
我写的代码是:
axios.get('url', config).then((res) => {
var rawHtml = res.data;
const root = parse(rawHtml);
// console.log(root.querySelectorAll('option')); //Error here
root: HTMLElement = root.removeWhitespace() ; //Error
const data = root.querySelectorAll('option') ;
简而言之,无论我使用节点的任何方法 html 解析我都会收到此错误
我前几天刚 运行 遇到了这个问题。这对我有用:尝试将您创建的元素转换为 HTMLElement。
const root = parse(rawHtml) as HTMLElement;
现在它应该可以使用查询选择器函数而不会出现类型错误。
一定要喜欢它们的交集类型。我今晚打了这个并做了以下...
import { HTMLElement, parse, TextNode } from 'node-html-parser';
type ParseResult = (TextNode & { valid: boolean; }) | (HTMLElement & { valid: boolean; });
const result: ParseResult = parse(rawHTML);
if (result.valid) {
const root = (result as unknown) as HTMLElement;
const element = root.querySelector("...");
// Do something interesting with element here...
}
必须首先转换 result as unknown
,因为在 tsconfig.json.
中启用所有严格检查时,尝试直接转换 result as HTMLElement
是错误的
我正在为我的项目抓取 网站,为此我正在使用 axios,html 解析器使用 node-html-使用这个的解析器我在解析 dom
时遇到这个错误 " Error TS2339: Property
'querySelectorAll' does not exist on type '(TextNode & { valid: boolean; }) | (HTMLElement & { valid: boolean; })' "
我写的代码是:
axios.get('url', config).then((res) => {
var rawHtml = res.data;
const root = parse(rawHtml);
// console.log(root.querySelectorAll('option')); //Error here
root: HTMLElement = root.removeWhitespace() ; //Error
const data = root.querySelectorAll('option') ;
简而言之,无论我使用节点的任何方法 html 解析我都会收到此错误
我前几天刚 运行 遇到了这个问题。这对我有用:尝试将您创建的元素转换为 HTMLElement。
const root = parse(rawHtml) as HTMLElement;
现在它应该可以使用查询选择器函数而不会出现类型错误。
一定要喜欢它们的交集类型。我今晚打了这个并做了以下...
import { HTMLElement, parse, TextNode } from 'node-html-parser';
type ParseResult = (TextNode & { valid: boolean; }) | (HTMLElement & { valid: boolean; });
const result: ParseResult = parse(rawHTML);
if (result.valid) {
const root = (result as unknown) as HTMLElement;
const element = root.querySelector("...");
// Do something interesting with element here...
}
必须首先转换 result as unknown
,因为在 tsconfig.json.
result as HTMLElement
是错误的