web-dev-qa-db-ja.com

ブートストラップ4の依存関係Popper JsがAngularでエラーをスローします

新しい angular-cli プロジェクトを作成しました
そしてnpm install [email protected] jquery popper.js --saveを実行しました
。angular-cli.jsonの関連部分を以下のように変更しました。

  "styles": [
    "../node_modules/bootstrap/dist/css/bootstrap.css"
  ],
  "scripts": [
    "../node_modules/jquery/dist/jquery.js",
    "../node_modules/popper.js/dist/popper.js",
    "../node_modules/bootstrap/dist/js/bootstrap.js"
  ],

しかし、以下のエラーを受け取ります

10:2287 Uncaught SyntaxError: Unexpected token export
    at eval (<anonymous>)
    at webpackJsonp.../../../../script-loader/addScript.js.module.exports (addScript.js:9)
    at Object.../../../../script-loader/index.js!../../../../popper.js/dist/popper.js (popper.js?4b43:1)
    at __webpack_require__ (bootstrap 4403042439558687cdd6:54)
    at Object.2 (scripts.bundle.js:66)
    at __webpack_require__ (bootstrap 4403042439558687cdd6:54)
    at webpackJsonpCallback (bootstrap 4403042439558687cdd6:25)
    at scripts.bundle.js:1

それを修正する方法がありますか?

前もって感謝します...

90
cilerler

https://getbootstrap.com/docs/4.2/getting-started/introduction/#js のドキュメントを見ると、次のものがインポートされていることがわかります。

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

Jquery。slim。min.js、umd/ popper.min.js!という名前に注意してください。

そのため、私は.angular-cli.jsonで以下を使用しました。

      "styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.css"
      ],
      "scripts": [
        "../node_modules/jquery/dist/jquery.slim.min.js",
        "../node_modules/popper.js/dist/umd/popper.min.js",
        "../node_modules/bootstrap/dist/js/bootstrap.min.js"
      ],

その後それは今うまくいくようです。

210
Martin Bauer

私は同じ問題を抱えていました。私の解決策は、dist-folder(./node_modules/popper.js/dist/popper.js)ではなくumd-folder(./node_modules/)をインポートするためのnotです。 popper.js/dist /umd/ popper.js)あなたがjs-ファイルのミニまたは通常のバージョンを入手したかどうかは関係ありません。

46

Bootstrap 4の依存関係(jQuery、popper.jsなど)を追加して正しく含めることに苦労している人が多いことがわかります。しかし、 https://ng-bootstrap.github.io の形式の、はるかに簡単な解決策があります。

ng-bootstrapは、最初から書かれたnativeAngularディレクティブを提供します。 * jQueryやpopper.jsなどを含める必要はありません。*ディレクティブはAngularの世界で「理にかなった」APIを提供します。

Bootstrap 4.betaをAngularで使用しようとしている人のために - ng-bootstrapはBootstrap 4.beta CSSと完全に互換性のある最初のベータ版をリリースしました。

Asp.net Mvcumdで作業している場合も同様です。

https://stackoverflow.com/a/50839939/8497522 のように、BundleConfig.csに追加するだけです。

bundles.Add(new ScriptBundle("~/bundles/popper").Include("~/Scripts/umd/popper.js"));

を除いて:

bundles.Add(new ScriptBundle("~/bundles/popper").Include("~/Scripts/popper.js"));
0
Damian Kurek

モーダルを実行するには、tsconfig.tsでターゲットを「es2015」から「es5」に変更してください

"styles": [ "src/styles.css", 
            "node_modules/bootstrap/dist/css/bootstrap.min.css" ], 
"scripts": ["node_modules/jquery/dist/jquery.min.js", 
            "node_modules/popper.js/dist/umd/popper.min.js", 
            "node_modules/bootstrap/dist/js/bootstrap.min.js"] 
}
0
Maniraj A