npm Vue.js 3:无法导入Vue全局对象

5gfr0r5j  于 2022-11-14  发布在  Vue.js
关注(0)|答案(1)|浏览(263)

我正在疯狂地尝试将Vue3CLI输出与各种教程和插件(它们都使用Vue对象,如Vue.createApp(...)协调起来。

import {createApp} from 'vue';
createApp(...

但是import Vue from 'vue';导致Vue仍然是未定义的。我已经通过NPM安装了Vue 3。很明显,关于NPM导入,有一些关键的东西我不明白,如果导入整个模块都不工作,{createApp}导入怎么工作呢?
来自package.json:

"dependencies": {
    "@babel/polyfill": "^7.12.1",
    "apexcharts": "^3.22.1",
    "core-js": "^3.6.5",
    "d3": "^6.2.0",
    "vue": "^3.0.0",
    "vue-router": "^4.0.0-rc.1",
    "vue3-apexcharts": "^1.0.0"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.0",
    "@vue/cli-plugin-eslint": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "@vue/compiler-sfc": "^3.0.0",
    "babel-eslint": "^10.1.0",
    "babel-plugin-transform-regenerator": "^6.26.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^7.0.0-0"
  },

下面是我的临时main.js。它将输出'undefined',后跟正确的createApp函数定义:

import Vue from 'vue';
import {createApp} from 'vue';
console.log(Vue);   
console.log(createApp);
fgw7neuy

fgw7neuy1#

如果您使用的是CDN,则Vue可用作全局变量,可通过调用createApp方法(如Vue.createApp({...}))来创建示例,但如果您使用的是使用npm模块的捆绑器,则没有从vue模块导入的Vue对象,因此您应该从该模块导入createApp以创建新示例,如下所示:

import {createApp} from 'vue';
let app=new createApp({...})
app.use(somePlugin)
app.mount("#app")

有关详细信息,请查看全局API的迁移指南

相关问题