Node.js TypeScript编译错误,导入带花括号的非默认接口
编译我的TypeScript项目时,编译器抛出以下错误:Node.js TypeScript编译错误,导入带花括号的非默认接口,node.js,typescript,typescript-typings,Node.js,Typescript,Typescript Typings,编译我的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? 令人不快的是: impor
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";
问题是,在试图从中导入的键入文件中,DomeElement接口是一个非默认导出接口,如下所示:
export interface DomElement {
attribs?: {[s: string]: string};
children?: DomElement[];
data?: any;
name?: string;
next?: DomElement;
parent?: DomElement;
prev?: DomElement;
type?: string;
}
如果我取下花括号,它实际上会起作用,但这对我来说似乎有问题:
节点模块
文件夹中的类型定义中。我不想更改依赖项文件。Github中没有相关的开放问题,所以我认为它确实有效。事实上,它适用于使用旧版本Node(v8)的同事,但这似乎并没有什么不同- Node.js-12.14.0
- 列表项
- TypeScript 3.7.2(也测试为不适用于3.7.4)
- domhandler 2.4()的类型定义
- domutils 1.7()的类型定义
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es6",
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*"
]
}
},
"include": [
"src/**/*"
]
}
根据来自我的信息,我设法让它编译(并工作),尽管我不喜欢这个解决方案(因为它实际上关闭了对该模块的任何检查)
我已经删除了打字以清理html(以及相关的domhandler等)。TSC抱怨它不知道“清理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
使用
sanitize html
时遇到相同的问题,因为其依赖关系树是sanitize html
->htmlparser2
->domutils
->domhandler
。在升级到节点12之前,配置(使用typescript 3.6.4)在节点8中工作。如果有多个版本的domutils
,请检查您的npm shrinkwrap.json
或package lock.json
?还有,哪些依赖项在哪个版本中引入了domutils
?