61 votes

Comment utiliser Popper.js avec Bootstrap 4 beta ?

Je suis de la vieille école, j'ai donc téléchargé le code source de la version 1.12.0 et j'ai fait ce qui suit :

<script src="/popper.js-1.12.0/dist/popper.js"></script>
<script src="/bootstrap-4.0.0-beta/dist/js/bootstrap.js"></script>

Mais j'y arrive :

Uncaught SyntaxError: Unexpected token export

en ligne 2294 où il est dit :

export default Popper;

106voto

Fez Vrasta Points 1501

Vous souhaitez utiliser la cible de dist spécifiée dans le fichier package.json en tant que main entrée .

Dans ce cas, vous recherchez le umd construire ( dist/umd/popper.js )

C'est quoi l'UMD ?

En Modèle UMD tente généralement d'offrir une compatibilité avec les chargeurs script les plus populaires du moment (par exemple RequireJS entre autres). Dans de nombreux cas, il utilise AMD comme base, avec un boîtier spécial ajouté pour gérer la compatibilité avec CommonJS.

Cela signifie qu'un paquet UMD peut être chargé par l'intermédiaire de <script> et sont injectés dans la portée globale ( window ), mais fonctionnent également si nécessaire avec un chargeur CommonJS tel que RequireJS.

23voto

Lee Whitney Points 3570

Popper exige que vous utilisiez le fichier sous le nom de umd chemin avec Bootstrap 4.

L'une ou l'autre de ces versions CDN fonctionnera :

https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.5/umd/popper.js https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.5/umd/popper.min.js

D'autres réponses/commentaires mentionnent la version, cependant le problème n'est pas lié au versioning .

Ce n'est jamais une mauvaise pratique d'utiliser Exemple d'inclusion d'un popper par Bootstrap parce que ça devrait toujours fonctionner. Bootstrap 4 recommande pour l'instant la version 1.11 de popper, qui est un choix sûr, mais la version 1.12.5 devrait également fonctionner.

Remarque : pourquoi cette confusion entre les fichiers umd, esm et les fichiers popper ? L'intention est de créer des modules flexibles, mais en réalité, cela pourrait être plus simple. Ce poste explique certains des problèmes liés aux nouveaux types de modules.

3 votes

Avec SRI : <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3‌​/umd/popper.min.js" integrity="sha256-98vAGjEDGN79TjHkYWVD4s87rvWkdWLHPs5MC3FvFX‌​4=" crossorigin="anonymous"></script>

14voto

Skelly Points 27772

Veillez à utiliser la version de Popper.js référencée dans la documentation de Bootstrap.

https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js

3 votes

J'utilise popper 1.12.x et il y a une erreur "SyntaxError : export declarations may only appear at top level of a module". Je passe en 1.11.0 et ça marche. Merci :)

3 votes

Je ne crois pas que ce soit la version qui importe, c'est la partie "umd" de l'url qui est manquée quand on copie simplement la balise script de cdnjs. https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.4/umd/‌​popper.min.js travaux, https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.4/popp‌​er.min.js ne le fait pas.

6voto

Shivam Points 25

Conformément à la docs sur les poppers :

Popper.js est actuellement livré avec 3 cibles en tête : UMD, ESM et ESNext.

UMD - Universal Module Definition : AMD, RequireJS et globaux ;

ESM - Modules ES : Pour webpack/Rollup ou navigateur supportant la spécification ;

ESNext : Disponible dans dist/, peut être utilisé avec webpack et babel-preset-env ; Assurez-vous d'utiliser le bon pour vos besoins. Si vous voulez l'importer avec une balise, utilisez UMD.

1voto

MrGreen Points 87

J'ai eu le même problème. J'ai essayé différentes approches, mais celle-ci a fonctionné pour moi. Lisez l'instruction de http://getbootstrap.com/ .

Copiez les liens CDN (jQuery, Popper et Bootstrap) dans le même ordre (c'est important) que celui indiqué.

Bootstrap CDN links

<head>
  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T" crossorigin="anonymous"></script>
</head>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X