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

  在项目中遇见很多问题,报错是其中常见问题之一,例如在创建 Vue3 + Element-plus 项目中安装插件,在按照要求配置后运行项目,npm 报错,究竟是怎么回事那?

      我们在 采用自动导入,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;

  在百度检索缘由发现并没有相关内容,之后只有我们自己逐一排查,找到出现报错是因为是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.jpg

  解决方案

  1.问题原因

  以下问题解决其一即可:

  1.1unimport 包报错

  知道是由于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项目自动导入报错解决方案内容已讲述完毕,欢迎大家后续更多关注相关精彩内容。

原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/3963.html

发表评论

登录后才能评论