Node.js ReferenceError:未定义节点(尝试在nodejs应用程序的typescript函数中使用节点接口)

Node.js ReferenceError:未定义节点(尝试在nodejs应用程序的typescript函数中使用节点接口),node.js,typescript,dom,Node.js,Typescript,Dom,在扩展Cheerio库时,我实现了以下静态函数(其他扩展函数工作正常): 我曾想过在包含函数的特定.ts文件中显式导入节点库,但我没有找到任何“可包含”的标准DOM库。包含typescript库不会在功能不可用的环境中多填充该功能 虽然包含“dom”类型定义将使类型(在编译时)可用,但实际上并不会使(通常由浏览器运行时提供)在运行时可用 如果在运行时确实需要此功能,则还需要包含一个DOM for node.js的实现,例如此API。不能将接口用作值。他们是类型。类型在运行时不存在。谢谢@estu

在扩展Cheerio库时,我实现了以下静态函数(其他扩展函数工作正常):


我曾想过在包含函数的特定
.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",
    ]
}