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インターフェイスがデフォルトではないエクスポートされたインターフェイスであることです。
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)を使用している同僚でも機能しますが、違いがあるようには見えません。バージョン:
[〜#〜]更新[〜#〜]
ここに私のtsconfig.jsonがあります:
{
"compilerOptions": {
"module": "commonjs",
"esModuleInterop": true,
"target": "es6",
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"outDir": "dist",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*"
]
}
},
"include": [
"src/**/*"
]
}
GitHubのaluanhaddad からの情報に基づいて、私はそれをコンパイル(および動作)させることができましたが、解決策は好きではありません(そのモジュールのチェックを実際にオフにしているため)。
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