以下文档我无法创建 Vue.js 3 的实例

Tra*_*ter 3 javascript vue.js vue-component vuejs3

编码

https://stackblitz.com/edit/vue-ttt?file=src/main.js

问题

我正在尝试在 StackBlitz 中构建一个简单的井字游戏应用程序。这是我的 main.js 文件:

import Vue from "vue";
import App from "./App.vue";
import TicTacToe from "./components/TicTacToe";
import Cell from "./components/Cell";

Vue.component("tic-tac-toe", TicTacToe);  // error: "cannot read property 'component' of undefined"
Run Code Online (Sandbox Code Playgroud)

还要注意我的package.json文件有 vue 作为依赖项:

"dependencies": {
  "vue": "^3.0.0"
},
Run Code Online (Sandbox Code Playgroud)

所以错误意味着需要定义Vue,好吧,所以我参考了3x文档

const app = Vue.createApp({ /* options */ })
Run Code Online (Sandbox Code Playgroud)

但我得到 Cannot read property 'createApp' of undefined


那么我尝试定义一个实例:

const Vue = new Vue({});
Run Code Online (Sandbox Code Playgroud)

我得到 Cannot access 'Vue' before initialization


因此,基于对该错误的谷歌搜索,我尝试:

Vue = new Vue({})
Run Code Online (Sandbox Code Playgroud)

我明白了vue_1.default is not a constructor

那么我做错了什么?

Bou*_*him 7

当您使用 vue-cli、webpack 或 vite ... 等打包工具时,您应该导入createApp以创建新实例并将其用于app.useapp.component...:

 import { createApp } from "vue";
 const app = createApp({ /* options */ })
Run Code Online (Sandbox Code Playgroud)

使用 CDN 像:

<script src="https://unpkg.com/vue@next"></script>
Run Code Online (Sandbox Code Playgroud)

Vue 实例是全局可用的,因此您可以按如下方式使用它:

const app = Vue.createApp({ /* options */ })
Run Code Online (Sandbox Code Playgroud)


Wad*_*adu 5

您收到此错误是因为 Vue3 使用命名导出而不是默认导出。您可以在此处阅读更多相关信息。

您可以通过简单地将所有命名导出导入到名为 的对象来修复此错误Vue

import * as Vue from 'vue';
Run Code Online (Sandbox Code Playgroud)