Node.js ReferenceError:未定义节点(尝试在nodejs应用程序的typescript函数中使用节点接口)
在扩展Cheerio库时,我实现了以下静态函数(其他扩展函数工作正常):Node.js ReferenceError:未定义节点(尝试在nodejs应用程序的typescript函数中使用节点接口),node.js,typescript,dom,Node.js,Typescript,Dom,在扩展Cheerio库时,我实现了以下静态函数(其他扩展函数工作正常): 我曾想过在包含函数的特定.ts文件中显式导入节点库,但我没有找到任何“可包含”的标准DOM库。包含typescript库不会在功能不可用的环境中多填充该功能 虽然包含“dom”类型定义将使类型(在编译时)可用,但实际上并不会使(通常由浏览器运行时提供)在运行时可用 如果在运行时确实需要此功能,则还需要包含一个DOM for node.js的实现,例如此API。不能将接口用作值。他们是类型。类型在运行时不存在。谢谢@estu
我曾想过在包含函数的特定
.ts
文件中显式导入节点
库,但我没有找到任何“可包含”的标准DOM
库。包含typescript库不会在功能不可用的环境中多填充该功能
虽然包含“dom”类型定义将使类型(在编译时)可用,但实际上并不会使(通常由浏览器运行时提供)在运行时可用
如果在运行时确实需要此功能,则还需要包含一个DOM for node.js的实现,例如此API。不能将接口用作值。他们是类型。类型在运行时不存在。谢谢@estus,我明白了。这是答案,所以把它作为一个…我不确定这是一个好的答案,因为它没有解释它应该如何修复。我不能说在没有看到上下文的情况下应该如何解决这个问题,但正如答案所示,它很可能可以用JSDOM解决。
$.nodeType = function (elem: CheerioElement): number {
switch (elem.type) {
case "comment":
return Node.COMMENT_NODE; // <--- it fails here
case "tag":
return Node.ELEMENT_NODE; // <--- it fails here
case "text":
return Node.TEXT_NODE; // <--- it fails here
default:
return -1;
}
};
{
"compilerOptions": {
"baseUrl": ".",
"incremental": true,
"lib": [
"esnext",
"dom"
],
"module": "commonjs",
"noImplicitAny": true,
"outDir": "./lib/",
"sourceMap": true,
"target": "esnext",
"watch": true
},
"include": [
"./src/**/*.ts",
]
}