如何在Bootstrap 4 beta中使用Popper.js

Phi*_*enn 59 bootstrap-4 popper.js

我老了,所以我将源代码下载到1.12.0然后执行以下操作:

<script src="/popper.js-1.12.0/dist/popper.js"></script>
<script src="/bootstrap-4.0.0-beta/dist/js/bootstrap.js"></script>
Run Code Online (Sandbox Code Playgroud)

但是我得到了:

Uncaught SyntaxError: Unexpected token export
Run Code Online (Sandbox Code Playgroud)

在线2294说:

export default Popper;
Run Code Online (Sandbox Code Playgroud)

Fez*_*sta 103

您希望将package.json文件中main指定的dist目标用作条目.

在这种情况下,您正在寻找umd构建(dist/umd/popper.js)

什么是UMD?

UMD模式通常试图提供与天(如RequireJS除其他外)最流行的脚本加载器的兼容性.在许多情况下,它使用AMD作为基础,添加了特殊外壳以处理CommonJS兼容性.

这意味着可以通过<script>标记加载UMD包并将其注入全局范围(window),但如果需要,还可以使用CommonJS加载程序(如RequireJS).

  • 哇,我已经阅读了3次此答案,但我不知道这意味着什么,或者如何解决相同的错误。有人有任何具体的解决方案可以解决吗? (5认同)

whi*_*and 20

Popper要求您使用带有Bootstrap 4 的umd路径下的文件.

这些CDN版本都可以使用:

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

其他答案/评论提到版本,但问题与版本控制无关.

使用Bootstrap包含popper的例子从来都不是一个坏习惯,因为它应该始终有效.Bootstrap 4现在推荐popper 1.11,这是一个安全的选择,但版本1.12.5也可以正常工作.

旁注:为什么与umd,esm和普通ol'popper文件混淆?目的是灵活的模块包装,但实际上它可以更简单.这篇文章解释了新模块类型的一些问题.

  • 使用SRI:`&lt;script src =“ https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js”完整性=“ sha256-98vAGjEDGN79TjHkYWVD4s87rvWkdWLHPs5MC3FvFX4 =” crossorigin =“匿名“&gt; &lt;/ script&gt;` (3认同)

Zim*_*Zim 13

确保使用Bootstrap文档中引用的Popper.js版本.

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

  • 我使用popper 1.12.x并且它出错"SyntaxError:export declarations只能出现在模块的顶层".更改为1.11.0,它的工作原理.谢谢 :) (3认同)
  • 我不相信它是重要的版本,它是简单地从cdnjs复制脚本标记时错过的url的"umd"部分.`https:// cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.4/umd/popper.min.js` works,`https://cdnjs.cloudflare.com/ajax/libs/popper. js/1.12.4/popper.min.js`没有. (3认同)

Shi*_*vam 6

根据popper文档:

Popper.js目前有三个目标:UMD,ESM和ESNext.

UMD - 通用模块定义:AMD,RequireJS和全局变量;

ESM - ES模块:适用于支持规范的webpack/Rollup或浏览器;

ESNext:dist /中可用,可与webpack和babel-preset-env一起使用; 确保使用正确的一个满足您的需求.如果要使用标记导入它,请使用UMD.