vue3+vite配置 unplugin-vue-component 找不到 Vant 组件的问题

使用 vue3 + vite + Vant 搭建移动端项目,为了避免全量引入 vant 导致打包体积过大,又不想一个一个组件手动导入,所以就选择了 vant 官方推荐的方法,使用 unplugin-vue-components 插件自动引入组件,并按需引入组件的样式。
但是运行过程中遇到了报错:[vite] Internal server error: Failed to resolve import "vant/es" from "xxx"

vue3 + vite

项目依赖

  • package.json
{"name": "vue3-demo","private": true,"version": "1.0.0","type": "module","scripts": {"dev": "vite --host","build": "vue-tsc && vite build","preview": "vite preview","git": "tive git -c tive.git.config.cjs","lint": "eslint --ext .js,.jsx,.ts,.tsx --fix --quiet ./src","lint:stylelint": "stylelint --cache --fix \"src/**/*.{less,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/","prepare": "husky install"},"dependencies": {"amfe-flexible": "^2.2.1","axios": "^1.4.0","lib-flexible": "^0.3.2","pinia": "^2.0.35","vant": "^4.3.1","vue": "^3.2.47","vue-router": "4.0.1"},"devDependencies": {"@types/node": "^20.1.0","@typescript-eslint/eslint-plugin": "^5.59.2","@typescript-eslint/parser": "^5.59.2","@vitejs/plugin-vue": "^4.1.0","typescript": "^5.0.2","unplugin-vue-components": "^0.24.1","vite": "^4.3.2","vite-plugin-compression": "^0.5.1","vite-plugin-eslint": "^1.8.1","vite-plugin-style-import": "^2.0.0","vue-eslint-parser": "^9.2.1","vue-tsc": "^1.4.2"},"lint-staged": {"*.{js,jsx,tsx,ts}": ["npm run lint","npm run lint:stylelint"]}
}

完整报错

  Plugin: vite-plugin-eslintFile: /Users/tiven/Desktop/dev/yc-chat-mbi/src/components/Footer.vue
2:47:05 PM [vite] Internal server error: Failed to resolve import "vant/es" from "src/components/Footer.vue". Does the file exist?Plugin: vite:import-analysisFile: /Users/tiven/Desktop/dev/yc-chat-mbi/src/components/Footer.vue:1:891  |  /* unplugin-vue-components disabled */import { Field as __unplugin_components_1 } from 'vant/es';import 'vant/es/field/style/index';|                                                                                          ^2  |  import { Button as __unplugin_components_0 } from 'vant/es';import 'vant/es/button/style/index';3  |  import { defineComponent as _defineComponent } from "vue";
  • vite.config.ts 配置如下:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import eslintPlugin from 'vite-plugin-eslint'
import path from 'node:path'
import viteCompression from 'vite-plugin-compression'
import postCssPxToRem from 'postcss-pxtorem'
import Components from 'unplugin-vue-components/vite'
import { VantResolver } from 'unplugin-vue-components/resolvers'// https://vitejs.dev/config/
export default defineConfig({resolve: {// 在导入模块时,如果模块路径不包含文件扩展名,则会尝试添加下面这些扩展名extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],// 在导入模块时,如果模块路径以 / 开头,则会尝试在下面这些目录中查找该模块alias: {'@': path.resolve(__dirname, './src'),'@img': path.resolve(__dirname, './src/assets/img'),},},build: {sourcemap: false,minify: 'terser',assetsInlineLimit: 4096,reportCompressedSize: false,rollupOptions: {output: {// 最小化拆分包manualChunks(id) {if (id.includes('node_modules')) {return id.toString().split('node_modules/')[1].split('/')[0].toString()}},chunkFileNames: 'assets/js/[name].[hash].js', // 用于命名代码拆分时创建的共享块的输出命名,[name]表示文件名,[hash]表示该文件内容hash值},// external: ['antd'],},terserOptions: {compress: {drop_console: true,drop_debugger: true,},},},plugins: [vue(),Components({resolvers: [VantResolver()],}),eslintPlugin({include: ['src/**/*.ts', 'src/**/*.vue', 'src/*.ts', 'src/*.vue'],}),viteCompression({threshold: 1024 * 4,}),],css: {postcss: {plugins: [postCssPxToRem({rootValue: 37.5, //1rem的大小propList: ['*'], //需要转换的属性selectorBlackList: ['.norem'], //过滤掉不需要转换的类名}),],},},
})

解决办法

修改 vite.config.ts 下的 resolve.extensions 参数配置,加入 .mjs 拓展名即可解决。

export default defineConfig({resolve: {// 在导入模块时,如果模块路径不包含文件扩展名,则会尝试添加下面这些扩展名extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],// 在导入模块时,如果模块路径以 / 开头,则会尝试在下面这些目录中查找该模块alias: {'@': path.resolve(__dirname, './src'),'@img': path.resolve(__dirname, './src/assets/img'),},},
})

欢迎访问:天问博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/29034.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023.7.15排序算法合集

排序算法合集 一、概述二、排序算法1.冒泡排序2.插入排序3.选择排序4.快速排序5.归并排序6.计数排序 三、完整源码 一、概述 排序算法是计算机科学中的一类常见算法,用于将一组数据按照特定的顺序进行排列;排序算法的应用非常广泛,涉及到数据…

【iOS】对象的本质探索

OC对象的底层结构 问题:一个NSObject对象在内存中是如何布局的?NSObject的内存布局1 通过 lldb命令 窥探NSObject内存布局2 通过 View Memory 窥探NSObject内存布局3 通过 底层函数API 窥探NSObject内存布局总结 通过继承关系进一步了解NSObject1 运行项…

智慧数据驱动:基于smardaten构建多维数据可视化大屏

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

【DC-DC】APS54083 降压恒流驱动器大功率深度调光 舞台 RGB 汽车照明 台灯驱动芯片

产品描述 APS54083 是一款 PWM 工作模式,高效率、外围简单、外置功率 MOS 管,适用于 5-220V 输入高精度降压 LED 恒流驱动芯片。输出最大功率150W最大电流 6A。APS54083 可实现线性调光和 PWM 调光,线性调光脚有效电压范围 0.5-2.5V.PWM 调光频率范围 1…

算法训练营第四十三天||● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

● 1049. 最后一块石头的重量 II 这道题和昨天的分割等和子集一样&#xff0c;只是最后返回值不一样 class Solution { public:int lastStoneWeightII(vector<int>& stones) {int sum 0;for(int i 0;i<stones.size();i){sum stones[i];}int target sum / 2;…

喝汽水问题:1瓶汽水1元。2个空瓶可以换1瓶汽水,给20元,可以买多少汽水 (7.19)

泪目&#xff01;&#xff01;&#xff01;终于是自己完完整整写出的代码了&#xff0c;不翻资料也没看参考代码 &#xff08;之前的要么和老师练习&#xff0c;要么找教材东拼西凑&#xff09; 方法2&#xff1a;数学角度看bottle价值0.5 元&#xff0c;20元最多可换40bottl…

docker服务启动过程分析

How docker.service start&#xff1f; just by ref 我们先了解docker的各个核心组件的介绍 runc&#xff1a;runc实现了容器的底层功能&#xff0c;例如创建、运行等。runc通过调用内核接口为容器创建和管理cgroup、namespace等Linux内核功能&#xff0c;来实现容器的核心特…

vuecli5.x 配置图片输出为base64

解释&#xff1a;webpack的默认配置是小于一定的文件大小就要将图片转为base64, 所以尽量将这个阈值调大你的图片就可以转为base64; 当然这种做法不好, 会导致代码文件变大, 不过为了满足需求也没得办法。这年头大家都用 vite 了, 网上没有 vuecli5.x 这方面的记录, 写篇文章记…

Halcon 深度学习初探

什么是深度学习&#xff1f; 深度学习是一系列机器学习的方法集合&#xff0c;其算法结构类似于多层级的神经网络。通过对大量的训练样本图像的学习&#xff0c;提取其各个层次的特征&#xff0c;使网络具有判别和推理能力。 关于halcon中的深度学习&#xff1a; 自halcon17…

【C语言】文件操作

目录 前言&#xff1a; 一、为什么使用文件 二、什么是文件 &#xff08;一&#xff09;程序文件 &#xff08;二&#xff09;数据文件 &#xff08;三&#xff09;文件名 三、文件的打开和关闭 &#xff08;一&#xff09;文件指针 &#xff08;二&#xff09;文件的…

基于VUE的音乐qq网站设计与实现(Java+spring boot+MySQL+VUE)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于VUE的音乐qq网站设计与实现&#xff08;Javaspring bootMySQLVUE&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java springboot框架 my…

东莞-戴尔R540服务器故障告警处理方法

DELL PowerEdge R540服务器故障维修案例&#xff1a;&#xff08;看到文章就是缘分&#xff09; 客户名称&#xff1a;东莞市某街道管理中心 故障机型&#xff1a;DELL R540服务器 故障问题&#xff1a;DELL R540服务器无法开机&#xff0c;前面板亮黄灯&#xff0c;工程师通过…