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

Gre*_*246 2 npm vue.js vue-cli vuejs3

我疯狂地试图将 Vue 3 CLI 输出调和成适用于各种教程和插件的东西,这些教程和插件都使用 Vue 对象,如Vue.createApp(.... 在我的项目中,我可以使用

import {createApp} from 'vue';
createApp(...
Run Code Online (Sandbox Code Playgroud)

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"
  },
Run Code Online (Sandbox Code Playgroud)

这是我的临时 main.js。这将打印“未定义”,然后是正确的 createApp 函数定义:

import Vue from 'vue';
import {createApp} from 'vue';
console.log(Vue);   
console.log(createApp);   
Run Code Online (Sandbox Code Playgroud)

Bou*_*him 6

如果您使用 CDNVue可用作全局变量,可用于通过调用createApp类似的方法来创建实例Vue.createApp({...}),但如果您使用的是使用 npm 模块的捆绑器,则没有Vuevue模块导入的对象, 因此您应该createApp从它创建一个新实例,如:

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

更多详情请查看全球API迁移指南