【发布时间】:2019-10-24 11:11:04
【问题描述】:
我有一个包含以下内容的 pug 文件...
#footer
script(type="module")
| import Vue from '/vue/vue.esm.browser.js'
| import { JRGVue } from '/ui/index.js'
| import VueMaterial from '/material/vue-material.js'
| (()=>{
| const vue = new JRGVue(Vue);
| vue.app.use(VueMaterial);
| vue.app.$mount('#jg-app');
| })();
我明白了
未捕获的语法错误:请求的模块“/material/vue-material.js”未提供名为“default”的导出
当我把它改成
import * as VueMaterial from '/material/vue-material.js'
我明白了
Uncaught TypeError: _vue2.default is not a constructor
使用 ESM 导入 Vue 材质库的正确方法是什么?
更新
它似乎确实适用于 Vuetify
#footer
script(type="module")
| import Vue from '/vue/vue.esm.browser.js'
| window.Vue = Vue;
script(type="module")
| import * as Vuetify from '/vuetify/vuetify.js';
| import { JRGVue } from '/ui/index.js';
| Vue.use(Vuetify);
| const vue = new JRGVue(Vue);
| vue.app.$mount('#jg-app');
更新
似乎不再使用最新版本。如果能找到一个支持原生 ESM 的 UI,那就太好了
【问题讨论】:
-
您不应该在导入路径的末尾附加
.js扩展名,它应该是/material/vue-material,因为它是暴露所有模块的文件夹/路径中的index.js与插件相关联。 -
该问题没有包含足够的详细信息,并且缺少 stackoverflow.com/help/mcve 。什么是 /material/vue-material.js ?这个你知道,别人不知道。是 vue-material dist 文件夹中的 UMD 模块吗?
-
@Terry 我会小心的。很确定 ESM 需要它,我注意到它在带有 --experimental-modules 的较新版本的节点中是必需的
标签: vue.js vue-material