gpt4 book ai didi

node.js - TypeScript 编译错误,导入带花括号的非默认接口(interface)

转载 作者:行者123 更新时间:2023-12-03 12:12:51 24 4
gpt4 key购买 nike

编译我的 TypeScript 项目时,编译器抛出以下错误:

node_modules/@types/domutils/index.d.ts:6:10 - error TS2614: Module '"../../domhandler/lib"' has no exported member 'DomElement'. Did you mean to use 'import DomElement from "../../domhandler/lib"' instead?

违规行是:
import { DomElement } from "domhandler";

问题是,在它试图从中导入的类型文件中,DomElement 接口(interface)是一个非默认导出接口(interface),如下所示:
export interface DomElement {
attribs?: {[s: string]: string};
children?: DomElement[];
data?: any;
name?: string;
next?: DomElement;
parent?: DomElement;
prev?: DomElement;
type?: string;
}

如果我删除花括号,它实际上确实有效,但这对我来说似乎有问题:
  • 我的印象是,只有默认导出可以在没有花括号的情况下导入。为什么要导入 必填 没有花括号?
  • 此问题出现在 node-modules 中的类型定义中。绝对类型提供的文件夹。我不想更改依赖文件。 Github 中没有相关的未解决问题,所以我认为它确实有效。事实上,它适用于使用旧版本 Node (v8) 的同事,但这似乎不应该有所作为。

  • 版本:
  • Node.js - 12.14.0
  • 列表项
  • TypeScript 3.7.2(也在 3.7.4 上测试不工作)
  • domhandler 2.4 ( https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/domhandler )
  • 的类型定义
  • domutils 1.7 ( https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/domutils )
  • 的类型定义

    更新

    这是我的 tsconfig.json:
    {
    "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "noImplicitAny": true,
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist",
    "baseUrl": ".",
    "paths": {
    "*": [
    "node_modules/*"
    ]
    }
    },
    "include": [
    "src/**/*"
    ]
    }

    最佳答案

    基于来自 aluanhaddad at GitHub 的信息我设法让它编译(和工作),虽然我不喜欢这个解决方案(因为它实际上关闭了对该模块的任何检查)。

    我已经删除了 sanitize-html (以及相关的 domhandler 等)的类型。 TSC 说它不知道“sanitize-html”模块,所以我在我的 src 文件夹中添加了一个虚拟模块声明。

    src/sanitize-html.d.ts

    declare module 'sanitize-html';

    tsconfig.json
    {
    "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "noImplicitAny": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true
    },
    "lib": [
    "es6",
    "dom"
    ],
    "include": [
    "src/**/*",
    "index.ts"
    ],
    "exclude": [
    "**/*.spec.ts"
    ]
    }

    构建命令:
    tsc

    关于node.js - TypeScript 编译错误,导入带花括号的非默认接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59472179/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com