无法在 VueJS 中导入 Popper.js

我遵循本教程是为了学习如何在我的 VueJS 应用程序中制作弹出窗口。当我编译项目时,我收到一条错误消息:

[Vue warn]: Error in data(): "TypeError: _popperjs_core__WEBPACK_IMPORTED_MODULE_0__.default is undefined"

http://img1.mukewang.com/63eeeb1a000114d406020424.jpg

我将问题追溯到BasePopover.vue组件 - 第一<script>行说import Popper from "popper.js"; 在我的应用程序中我将其更改为import Popper from "@popperjs/core";但错误仍然出现。

所以我按照官方Popper.js 教程来简化事情。我通过安装npm i @popperjs/core(也尝试使用VueCLI如下图所示和 via npm install @popperjs/core --save)。

http://img3.mukewang.com/63eeeb2e0001191812130600.jpg

这是我当前的代码:


<template>

  <div id="app">

    <button id="button" aria-describedby="tooltip">My button</button>

    <div id="tooltip" role="tooltip">My tooltip</div>

  </div>

</template>


<script>

//import Popper from "@popperjs/core/lib/popper";

import Popper from "@popperjs/core";

export default {

  name: "TestView",

  components: {

  },


  data() {

    

      const button = document.querySelector('#button');

      const tooltip = document.querySelector('#tooltip');


      Popper.createPopper(button, tooltip);

    

    return {

    };

  },

};

</script>


<style>

#app {

  font-family: "Avenir", Helvetica, Arial, sans-serif;

  -webkit-font-smoothing: antialiased;

  -moz-osx-font-smoothing: grayscale;

  text-align: center;

  color: #2c3e50;

  padding: 350px 0;

  background-color: #C4DFD1;

}

</style>

我不知道还能做什么。任何帮助表示赞赏!


临摹微笑
浏览 307回答 3
3回答

莫回无

import { createPopper } from '@popperjs/core';export default {name: "TestView",components: {},data() {return {};},mounted(){&nbsp; const button = document.querySelector('#button');&nbsp; const tooltip = document.querySelector('#tooltip');&nbsp; createPopper(button, tooltip);}};你应该使用 refs 而不是 id(我在这里没有使用它们以避免混淆你),这将确保没有冲突,因为你的应用程序可以有多个具有相同 Id 的元素,例如#button。当使用像 popper js 这样的 UI 库时,总是尝试将它们的代码放在 mounted 钩子中,mounted 钩子确保你定位的元素(例如 #button)在 dom 中

侃侃尔雅

我认为你应该这样做import&nbsp;{&nbsp;createPopper&nbsp;}&nbsp;from&nbsp;'@popperjs/core';而不是像上面那样import&nbsp;Popper&nbsp;from&nbsp;"@popperjs/core";看这里:模块捆绑器

拉莫斯之舞

您必须添加this.$nextTick仅在呈现整个视图后才会运行的代码(https://vuecomponent.com/integrations/popperjs.html)import { createPopper } from '@popperjs/core';&nbsp; &nbsp; &nbsp;&nbsp;export default {&nbsp; name: "TestView",&nbsp; components: {&nbsp; },&nbsp; data() {&nbsp; &nbsp; return {&nbsp; &nbsp; };&nbsp; },&nbsp; mounted(){&nbsp; &nbsp; this.$nextTick(() => {&nbsp; &nbsp; &nbsp; const button = document.querySelector('#button');&nbsp; &nbsp; &nbsp; const tooltip = document.querySelector('#tooltip');&nbsp; &nbsp; &nbsp; createPopper(button, tooltip);&nbsp; &nbsp; });&nbsp; }};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript