javascript - Vue-konva 遇到错误:必须使用 import 来加载 ES 模块
问题描述
我正在尝试按照此处的文档Vue-konva
将其实现到我的应用程序中。但是我遇到了以下错误:
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.
我做了以下步骤:
- 安装
npm install vue-konva konva --save
和npm install canvas --save
. Vue
从文档中添加了我的应用程序中的代码。- 当我重新启动应用程序时,我得到了错误。
以下是我尝试解决的问题:
- 我在用
node version v14.16.0
- 我在我的
package.json
文件中添加了以下内容:
"ssr": false,
"type":"module",
- 删除
node-modules
文件夹并使用 重新创建npm-install
。
我觉得我正在做文档中提到的所有事情,但仍然不确定为什么会出现错误。有人可以帮我解决这个问题吗?
以下是应用程序的完整代码:
<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
<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>
解决方案
这个应该可以正常工作
<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>
推荐阅读
- c++ - 我是否在头文件中正确创建了一个对象?
- swift - userDefualt 在类被 segued 时不保存开关
- python-3.x - 如何在左侧空白处拆分列表的元素并将左右分配给不同的变量?
- xcode - 使用 `pod gen` 和 `xcodebuild build test` 为 Catalyst 设置 CI
- reactjs - 无法读取未定义的属性“scrollRequest”,即使它应该是
- javascript - 使用单个按钮多次更改文本并隐藏最后一个文本的按钮
- python - 如何在 Python 中将 txt 拆分为数组?
- c# - C#通过用户输入从列表中删除某个项目的问题
- r - 如何正确调用/子集 xts 对象中的特定列?
- c - c 中的 for 循环不会在循环的最后一次迭代中递增