Vue 不是构造函数

Posted

技术标签:

【中文标题】Vue 不是构造函数【英文标题】:Vue is not a constructor 【发布时间】:2017-07-09 16:27:56 【问题描述】:

我使用webpack,在chrome中构建并运行后显示此错误,我不知道如何解决。

我的代码很简单:


  "devDependencies": 
    "babel-core": "^6.23.1",
    "babel-loader": "^6.3.2",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-es2015": "^6.22.0",
    "babel-runtime": "5",
    "css-loader": "^0.26.1",
    "html-webpack-plugin": "^2.28.0",
    "vue-hot-reload-api": "^2.0.9",
    "vue-html-loader": "^1.2.3",
    "vue-loader": "10.0.3",
    "vue-style-loader": "^2.0.0",
    "vue-template-compiler": "^2.1.10",
    "webpack": "^2.2.1",
    "webpack-dev-server": "^2.4.1"
  ,
  "dependencies": 
    "vue": "^2.1.10"
  

【问题讨论】:

尝试像这样导入vue import Vue from 'vue' 查看本教程以了解没有 vue-cli 的 Vue v3 设置:frontendguruji.com/blog/… 【参考方案1】:

您只需要导入运行时构建。 This comment in the Github issues 解释。

把这个放在你的webpack.config.js

resolve: 
  alias: 
    vue: 'vue/dist/vue.js'
  

【讨论】:

没有webpack怎么办?我只使用 ts-node 来解析包。 @mesqueeb 在开发中使用vue/dist/vue.js,在生产中使用vue/dist/vue.min.js【参考方案2】:

Vue 是该库的默认导出,因此您可以这样导入。

import Vue from 'vue'

【讨论】:

@BelminBedak 谢谢,我原来的代码是import * as Vue from 'vue';,我改了就可以了。 我是这样导入 Vue 的,但还是不行。知道为什么吗? 效果很好,请问为什么它不能像 window.Vue = require('vue');谢谢! @salmanifrahim 到那时,这将取决于您的构建过程,require('vue') 在浏览器中不起作用,并且“应该”编译为支持默认导出和主要导出。如果你添加 require("vue').default 它可能会起作用,但是,你最好的选择是像上面那样依赖 ESM 导入语句。

以上是关于Vue 不是构造函数的主要内容,如果未能解决你的问题,请参考以下文章

获取未捕获的 TypeError: ...default 不是构造函数 - 来自 Vue 组件

TypeError:EventEmitter 不是新 MapboxGeocoder 的构造函数

AuthProvider在使用firebase auth时不是构造函数,VueJS Webpack

Vue.js入门。十个指令。4种常用方法

Vue2.x源码学习笔记-Vue构造函数

Vue实例及构造选项