【问题标题】:Uncaught Reference Error: Vue is not Defined (Despite Direct Script Included in file)未捕获的引用错误:未定义 Vue(尽管文件中包含直接脚本)
【发布时间】:2018-08-20 11:50:04
【问题描述】:

我一直在尝试将这个 vue.js 模板实现到我的 vue 项目中,尽管在第一行设置了直接脚本,但它一直返回“未捕获的 ReferenceError: Vue is not defined”。

<script type="text/javascript" src="https://vuejs.org/js/vue.min.js"</script>

<template>
  <div id="app" class="wrapper">
      <fullcalendar class="full-Calendar" :events="events" :editable="true"></fullcalendar>
  </div>
</template>


<script>
  Vue.component('full-calendar', {
  template: '<div></div>',

  props: {
    events: {
      type: Array, 
      required: true
    },

    editable: {
      type: Boolean,
      required: false,
      default: false
    },

    droppable: {
      type: Boolean,
      required: false,
      default: false
    }
  },

  data: function()
  {
    return {
      cal: null
    };
  },

  ready: function()
  {
    var self = this;
    self.cal = $(self.$el);


    var args = {
      lang: 'en',
      header: {
        left:   'prev,next today',
        center: 'title',
        right:  'month,agendaWeek,agendaDay'
      },
      height: "auto",
      allDaySlot: false,
      slotEventOverlap: false,
      timeFormat: 'HH:mm',

      events: self.events,

      dayClick: function(date)
        {
            self.$dispatch('day::clicked', date);
            self.cal.fullCalendar('gotoDate', date.start);
            self.cal.fullCalendar('changeView', 'agendaDay');
      },

      eventClick: function(event)
        {
                self.$dispatch('event::clicked', event);
        }
    };

    if (self.editable)
    {
      args.editable = true;
      args.eventResize = function(event)
      {
        self.$dispatch('event::resized', event);
      }

      args.eventDrop = function(event)
      {
        self.$dispatch('event::dropped', event);
      }
    };

    if (self.droppable)
    {
      args.droppable = true;
      args.eventReceive = function(event)
      {
        self.$dispatch('event::received', event);
      }
    };

    this.cal.fullCalendar(args);

  } 

});

new Vue({
  el: '#app',

  data: {    
    events: [
        {
            title: 'Event1',
            start: '2018-08-10 12:30:00',
          end: '2018-08-10 16:30:00'
        },
        {
            title: 'Event2',
            start: '2018-08-07 17:30:00',
          end: '2018-08-07 21:30:00'
        }
    ]
  },
  events: {
    'day::clicked': function(date)
    {
      console.log(date);
    }
  }
});
</script>

<style>
.wrapper {
  margin: 2rem;
}
</style>

我也尝试将直接脚本添加到 index.html 并导致“[Vue warn]: Unknown custom element”

【问题讨论】:

  • 第 1 行的 script 标签有语法错误,没有正确关闭。试试&lt;script type="text/javascript" src="https://vuejs.org/js/vue.min.js"&gt;&lt;/script&gt;

标签: vuejs2 vue-component


【解决方案1】:

您只能在组件中使用一个&lt;script&gt; 标签。 由于存在 2 个,它将优先考虑默认语法流

<templete></templete>
<script></script>
<style></style>

看看这个 https://github.com/vuejs/vue-loader/issues/228

https://medium.com/@lassiuosukainen/how-to-include-a-script-tag-on-a-vue-component-fe10940af9e8

【讨论】:

  • 这可以解释为什么直接脚本不起作用。但是,这仍然会留下“未捕获的引用错误:未定义 Vue”的问题
  • 好吧,那是因为你需要注入/安装 vue。
  • 我试图避免安装 vue,因为我希望最终实现此代码的服务器由于服务器限制而无法支持节点
  • 然后在脚本中注入cdn
  • 能否请您给我指出一篇关于 cdn 注入的文章?我不熟悉这个过程
猜你喜欢
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 2020-02-02
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 2011-09-25
  • 2021-11-01
相关资源
最近更新 更多