首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行错误的Vue-konva :必须使用导入加载ES模块

运行错误的Vue-konva :必须使用导入加载ES模块
EN

Stack Overflow用户
提问于 2021-11-02 13:50:02
回答 1查看 622关注 0票数 3

我试图通过遵循Vue-konva这里的文件实现到我的应用程序中。但我遇到了以下错误:

代码语言:javascript
复制
Must use import to load ES Module: /Users/myName/projects/projectName/node_modules/konva/lib/index-node.js require() of ES modules is not supported. 
require() of /Users/myName/projects/projectName/node_modules/konva/lib/index-node.js from /Users/myName/projects/projectName/node_modules/vue-konva/umd/vue-konva.js is an ES module file as it is a .js file whose nearest parent package.json 
contains "type": "module" which defines all .js files in that package scope as ES modules. Instead rename index-node.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /Users/myName/projects/projectName/node_modules/konva/package.json.

我做了以下步骤:

  1. 安装npm install vue-konva konva --savenpm install canvas --save
  2. 在我的Vue应用程序中添加了来自文档的代码。
  3. 当我重新启动应用程序时,我会得到错误。

以下是我尝试过的工作:

  1. 我正在使用node version v14.16.0
  2. 我在我的package.json文件中添加了以下内容:
代码语言:javascript
复制
"ssr": false,
"type":"module",
  1. 删除node-modules文件夹并使用npm-install再次创建。

我觉得我在做文档中提到的所有事情,但仍然不知道为什么会出现错误。有人能帮我解决这个问题吗?

下面是应用程序的完整代码:

代码语言:javascript
复制
<template>
  <v-stage :config="configKonva">
    <v-layer>
      <v-circle :config="configCircle" />
    </v-layer>
  </v-stage>
</template>

<script>
import Vue from 'vue'
import VueKonva from 'vue-konva'

Vue.use(VueKonva)

export default {
  data () {
    return {
      configKonva: {
        width: 200,
        height: 200
      },
      configCircle: {
        x: 100,
        y: 100,
        radius: 70,
        fill: 'red',
        stroke: 'black',
        strokeWidth: 4
      }
    }
  }
}
</script>

<style>
body {
  margin: 0;
  padding: 0;
}
</style>

** 更新了 **我试着喜欢这个,得到了错误,client.js:227 TypeError: Vue.use is not a function

代码语言:javascript
复制
<template>
  <v-stage :config="configKonva">
    <v-layer>
      <v-circle :config="configCircle" />
    </v-layer>
  </v-stage>
</template>

<script>
export default {
  data () {
    return {
      configKonva: {
        width: 200,
        height: 200
      },
      configCircle: {
        x: 100,
        y: 100,
        radius: 70,
        fill: 'red',
        stroke: 'black',
        strokeWidth: 4
      }
    }
  },
  async mounted () {
    if (process.browser) {
      const Vue = await import('vue')
      const VueKonva = await import("vue-konva")
      Vue.use(VueKonva)
      console.log('HELLO FROM MOUNTED')
    }
  }
}
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-04 07:20:13

这个应该工作得很好

代码语言:javascript
复制
<script>
import Vue from 'vue'

export default {
  async mounted () {
    if (process.browser) {
      const VueKonva = await import('vue-konva')
      Vue.use(VueKonva)
      console.log('HELLO FROM MOUNTED')
    }
  }
}
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69811607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档