Vue3+Element-plus项目自动导入报错的解决方案

 更新时间:2022年07月13日 15:26:00   作者:varBlue  
vue3出来一段时间了,element也更新了版本去兼容vue3,下面这篇文章主要给大家介绍了关于Vue3+Element-plus项目自动导入报错的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

在创建 Vue3 + Element-plus 项目时,根据 Element-plus 文档,采用自动导入,安装 unplugin-vue-components 和 unplugin-auto-import 两款插件,但在按要求配置后运行项目,npm 报错

 ERROR  SyntaxError: Unexpected token '?'
...\node_modules\unimport\dist\chunks\vue-template.cjs:55
    const name = i.as ?? i.name;

网上查找发现当前(20220601)并无相关解决方案,经排查发现错误是由 unplugin-auto-import 插件的依赖 unimport 包引发,查看解决方法可直接跳转至“解决方案”

安装步骤

1.安装插件

npm install -D unplugin-vue-components
npm install -D unplugin-auto-import

两个插件使用一条命令一起安装可能出错

2.vue.config.js 设置

const { defineConfig } = require('@vue/cli-service')
 
const AutoImport = require('unplugin-auto-import/webpack')
const Components = require('unplugin-vue-components/webpack')
const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
 
module.exports = defineConfig({
  configureWebpack: {
    plugins: [
      AutoImport({
        resolvers: [ElementPlusResolver()],
      }),
      Components({
        resolvers: [ElementPlusResolver()],
      }),
    ],
  },
)}

3.npm run serve 出错

解决方案

1.问题原因 

以下问题解决其一即可:

1.1 unimport 包报错

查找 unplugin-auto-import 插件的依赖 unimport 包,node_modules\unimport\dist\chunks\vue-template.cjs:55 位置的语句报错:

const name = i.as ?? i.name;

1.2 node.js 和 npm 版本过低

笔者出现此问题时,node.js 版本为 v12.18.0,npm 版本为 6.14.5

2.解决方法

降低 unplugin-auto-import 插件版本或升级 node.js 和 npm 版本,选择其一即可:

2.1 降低 unplugin-auto-import 插件版本

更换 unplugin-auto-import 插件版本,经验证,安装 unplugin-auto-import@0.72 及以前版本可规避此问题

npm install -D unplugin-auto-import@0.7.2

2.2 升级 node.js 和 npm 版本

将 node.js 版本升级至长期维护版,20220601时为 v16.15.0,升级方法:从 node.js官网 下载长期维护版,安装位置选择与当前 node.js 位置相同即可

将 npm 版本升级为与 node.js 版本匹配的推荐版本,20220601时为 8.10.0,升级方法:

npm install -g npm@8.10.0

补充:element-plus自动按需导入及出错解决

自动按需导入官网教程

首先:npm install -D unplugin-vue-components unplugin-auto-import

然后配置webpack.config.js

const AutoImport = require('unplugin-auto-import/webpack')
const Components = require('unplugin-vue-components/webpack')
const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')

module.exports = {
  // ...
  plugins: [
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
}

也可以直接配置babel.config.js,但是如果安装版本过高可能在配置时会报错,所以安装指定版本

npm i element-plus@1.0.2-beta.28
1
module.exports = {
  plugins: [
    [
      'import',
      {
        libraryName: 'element-plus',
        customStyleName: (name) => {
          return `element-plus/lib/theme-chalk/${name}.css`
        }
      }
    ]
  ],
}

按照官网自动按需导入element-plus出现以下问题:样式不生效

将安装版本更换为npm i element-plus@1.0.2-beta.28

总结

到此这篇关于Vue3+Element-plus项目自动导入报错解决的文章就介绍到这了,更多相关Vue3 Element-plus自动导入报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue导入Echarts实现散点图

    Vue导入Echarts实现散点图

    这篇文章主要为大家详细介绍了Vue导入Echarts实现散点图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-12-12
  • Vue3中如何使用component :is 加载组件

    Vue3中如何使用component :is 加载组件

    Monaco-editor,一个vs code 编辑器,需要将其集成到项目,这篇文章主要介绍了Vue3中如何使用component :is 加载组件,需要的朋友可以参考下
    2023-11-11
  • vue+webpack实现异步组件加载的方法

    vue+webpack实现异步组件加载的方法

    下面小编就为大家分享一篇vue+webpack实现异步组件加载的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • vue+Vue Router多级侧导航切换路由(页面)的实现代码

    vue+Vue Router多级侧导航切换路由(页面)的实现代码

    这篇文章主要介绍了vue+Vue Router多级侧导航切换路由(页面)的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Vue学习-VueRouter路由基础

    Vue学习-VueRouter路由基础

    这篇文章主要介绍了Vue学习-VueRouter路由基础,路由本质上就是超链接,xiamian 文章围绕VueRouter路由的相关资料展开详细内容,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2021-12-12
  • 一文带你搞懂Vue中Vuex的使用

    一文带你搞懂Vue中Vuex的使用

    ​ Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。本文会通过一些简单的示例,为大家详细讲解Vuex的使用,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-11-11
  • vue实现简单表格组件实例详解

    vue实现简单表格组件实例详解

    vue的核心思想就是组件,什么是组件呢?按照我的理解组件就是装配页面的零件,vue三大核心组件 路由 状态管理,路由控制页面的渲染,页面由组件组成,数据有vuex进行管理和改变。下面我会以一个简单的案例来说
    2017-04-04
  • 详解mpvue小程序中怎么引入iconfont字体图标

    详解mpvue小程序中怎么引入iconfont字体图标

    这篇文章主要介绍了详解mpvue小程序中怎么引入iconfont字体图标,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Vue.js双向绑定实现原理详解

    Vue.js双向绑定实现原理详解

    这篇文章主要为大家详细介绍了Vue.js双向绑定实现原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Vue.js实现一个漂亮、灵活、可复用的提示组件示例

    Vue.js实现一个漂亮、灵活、可复用的提示组件示例

    这篇文章主要介绍了Vue.js实现一个漂亮、灵活、可复用的提示组件示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03

最新评论