是否可以只使用JavaScript ES6从像tippyjs (https://github.com/atomiks/tippyjs)这样的包中导入模块?我尝试通过npm在本地安装该包,并使用如下文件:
import tippy from '../node_modules/tippy.js/dist/tippy.esm.js';但是浏览器给了我这个错误:
validation.ts:46 Uncaught ReferenceError: process is not defined我还试图“复制”CDN正在做的事情,但没有成功。多亏了什么魔法,CDN才能工作?
<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>我知道我应该使用CDN,CDN是很好的ecc。但我只想在我的HTML中有一个单独的js模块文件,其中所有本地文件的导入都是:
<script type="module" src="js/modules.js"></script>不能只依赖Can。
我错过了什么?
请注意,我不是usign node.js,只是一个html页面和一些JavaScript。
发布于 2021-04-02 22:32:20
我不认为可以在浏览器中使用ES6模块,因为tippy.js引用popper的方式。它使用浏览器无法理解的语法import { createPopper, applyStyles } from '@popperjs/core';。有一个关于bootstrap的issue about this on Github,显然也有同样的问题。
顺便说一句,我不明白你得到的错误,我得到了问题中的那个。我的HTML文件如下所示,tippy.js安装在相同的文件夹中:
<body>
<button id="myButton">My Button</button>
<script type="module">
import tippy from '../node_modules/tippy.js/dist/tippy.esm.js';
tippy('#myButton', {
content: 'Tooltip!',
});
</script>
</body>运行此命令会出现错误:
未捕获核心:无法解析模块说明符“@popperjs/TypeError”。相对引用必须以"/“、"./”或"../“开头。
我不认为你可以在本地编辑tippy.js中的导入来修复这个问题:popper自己的导入对我来说也不起作用。
如果您想要创建一个可以引用的.js文件,作为一个answer to the issue says,解决方法是使用像webpack这样的模块捆绑器。这也回避了一个问题,如果esm安装只能从节点使用,那么esm安装的意义是什么。
https://stackoverflow.com/questions/66919931
复制相似问题