Vue.js - 解决部署到服务器后Element UI图标不显示问题(404错误)
问题描述
(1)element-ui 自带了一套常用的图标集合,使用起来十分方便。最近发现当 Vue.js 项目中使用 element-ui 图标时,如果使用 npm run dev 方式启动,图标是显示正常的:
(2)而一旦使用 npm run build 编译打包后发布到服务器上,会发现图片显示不出来(Chrome 浏览器下显示方块)。
原文:Vue.js - 解决部署到服务器后Element UI图标不显示问题(404错误)
(3)查看网络请求可以看到如下两个字体文件加载不到:
http://localhost:59090/static/css/static/fonts/element-icons.535877f.woff
http://localhost:59090/static/css/static/fonts/element-icons.732389d.ttf
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到 Vue.js 项目中 Element UI 图标在本地开发环境正常显示,但部署到服务器后出现 404 错误的问题,通常是因为静态资源路径配置不正确导致的。以下是一些解决步骤:
Vue CLI 创建的项目中,publicPath
配置决定了打包后资源文件的引用路径。你需要确保这个路径是正确的,特别是在部署到生产环境时。
vue.config.js
:如果你的项目中有 vue.config.js
文件,可以在这个文件里修改 publicPath
。如果没有,你可以创建一个。module.exports = {
publicPath: process.env.NODE_ENV === 'production'
? '/your-production-path/' // 修改为你的生产环境路径
: '/'
};
这里的 'your-production-path/'
应该替换为你实际部署的服务器路径。如果是根目录部署,则可以设置为 '/'
。
publicPath
,以适应不同的部署环境。确保你的 CSS 或 SCSS 文件中引用字体图标的方式是相对路径或使用了正确的变量。Element UI 的图标默认应该已经处理好路径问题,但如果自定义了样式或引入方式,需要确认路径是否正确。
如果使用的是 Nginx 或其他 Web 服务器,请确保服务器配置正确处理 .woff
和 .ttf
等字体文件的请求。例如,在 Nginx 配置中添加如下内容:
location ~* \.(eot|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin *;
}
这将允许跨域访问这些字体文件,有时候这也是导致图标无法显示的原因之一。
有时候即使更改了配置,由于浏览器缓存原因,可能还是看不到效果。尝试清理浏览器缓存,或者使用无痕浏览模式查看页面,以排除缓存问题。
完成上述步骤后,重新运行 npm run build
来构建项目,并将生成的 dist
目录上传到服务器相应位置,再次访问页面看是否解决问题。
按照以上步骤操作,你应该能够解决 Element UI 图标在服务器上不显示的问题。如果问题依旧,请检查是否有其他第三方插件或配置影响了资源加载。