web-dev-qa-db-fra.com

Dépendance de Bootstrap 4 Popper Js renvoie une erreur sur Angular

Je viens de créer un nouveau projet - angular-cli
et a exécuté npm install [email protected] jquery popper.js --save
et changé les parties liées de .angular-cli.json comme ci-dessous

  "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"
  ],

cependant recevoir l'erreur ci-dessous

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

toute idée de comment résoudre ce problème?

merci d'avance...

86
cilerler

En regardant les documents sur https://getbootstrap.com/docs/4.2/getting-started/introduction/#js vous pouvez voir qu'ils importent les éléments suivants:

<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>

Notez le nom: jquery .slim .min.js, umd /popper.min.js!

J'ai donc utilisé les éléments suivants dans mon .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"
      ],

Après cela, cela semble fonctionner maintenant.

205
Martin Bauer

J'ai eu le même problème. Ma solution était pas d'importer le dossier dist (./node_modules/popper.js/dist/popper.js) mais plutôt le dossier umd (./node_modules/popper.js/dist/ umd /popper.js). Peu importe si vous obtenez la version mini ou normale du fichier js.

41

Je peux voir que beaucoup de personnes ont du mal à ajouter et à inclure correctement les dépendances Bootstrap 4 (jQuery, popper.js, etc.). Mais il existe une solution beaucoup plus simple sous la forme de https://ng-bootstrap.github.io .

ng-bootstrap fournit native des directives angulaires écrites à partir de la base. La conséquence positive est que: * Vous n'avez pas besoin d'inclure et de vous inquiéter à propos des directives jQuery, popper.js, etc. . * Fournissent des API qui "ont un sens" dans le monde angulaire

Pour tous ceux qui essaient d’utiliser Bootstrap 4.beta avec Angular - ng-bootstrap vient de publier sa première version bêta entièrement compatible avec Bootstrap 4.beta CSS

2

Si vous travaillez dans Asp.net, Mvc umd fait aussi l'affaire.

Comme dans https://stackoverflow.com/a/50839939/8497522 , ajoutez simplement dans BundleConfig.cs:

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

sauf:

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

Pour exécuter modal, remplacez la cible "es2015" par "es5" dans tsconfig.ts.

"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