web-dev-qa-db-ja.com

Bootstrap 4 TypeScript Type Definitionがコンパイルに失敗します-モジュール 'popper.js'が見つかりません

TypeScriptプロジェクトをセットアップしてbootstrap 4をPopperjQuery、およびVisual Studio CodeのKnockout

ノックアウト、jquery、およびbootstrapタイプ定義をインストールしました。

npm install -–save @types/knockout
npm install -–save @types/jquery
npm install --save @types/bootstrap

require.js設定でJSファイルを参照しました

declare var require: any;
require.config({
    paths: {
        "knockout": "externals/knockout-3.5.0",
        "jquery": "externals/jquery-3.3.1.min",
        "popper.js": "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js",
        "bootstrap": "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
    }
})

俺の tsconfig.json これは:

{
    "compilerOptions": {
        "baseUrl": ".",
        "paths": { 
            "*": ["types/*"] 
        },
        "outDir": "./built/",
        "sourceMap": true,
        "noImplicitAny": true,
        "module": "AMD",
        "target": "es5"
    },
    "files":[
        "src/require-config.ts",
        "src/hello.ts"
    ]
}

プロジェクトをコンパイルしようとすると、次のエラーが発生します。

node_modules/@types/bootstrap/index.d.ts:9:25 - error TS2307: Cannot find module 'popper.js'.

9 import * as Popper from "popper.js";
                          ~~~~~~~~~~~

Found 1 error.

The terminal process terminated with exit code: 1

Bootstrapタイプ定義ファイルはpopper.jsモジュールを見つけることができないため、コンパイルに失敗します。

Popper.jsモジュールは、@ typesフォルダーにあります

node_modules
 |-@types
 |  |- bootstrap
 |     |-index.d.ts (this is failing)
 |- popper.js
    |- index.d.ts (popper.js type definition)

TypeScriptコンパイラに、bootstrap型定義が探しているpopper.jsが階層の上位にあることを伝えるにはどうすればよいですか。

これに近づいても答えを見つけることができませんでした。したがって、他の誰もが遭遇したことのないバグに遭遇した(可能性が低い)か、TypeScriptを初めて使用したか、環境を不適切にセットアップして、他のすべての人が取得する非常に基本的なセットアップ手順に失敗したため、誰もこれまでにない(たぶん)尋ねなければなりませんでした。

これを修正するにはどうすればよいですか?

12
aszalacinski

これは私が問題を抱えたときに私に思いついた最初の結果です。

このGithubコメント は私を助けました。

このライブラリにはDOMライブラリが必要です(ブラウザ環境)

Tsconfig.jsonのcompilerOptions.libにdomおよび 'es2017'を追加する必要があります。

"lib": [ "DOM" ]tsconfig.jsonに追加しただけで機能し、es5をターゲットにしています。

0
John Pavek