我开发了一个 Vue 项目,在本地运行 npm run serve 时,页面中的图片都能正常显示。但将项目打包部署到服务器(CentOS 7 系统,使用 Nginx 作为 Web 服务器)后,图片却显示不出来,页面上只显示图片的占位符。
我的 Vue 项目结构大致如下:
my-vue-project/
│
├── public/
│ ├── index.html
│ └── favicon.ico
│
├── src/
│ ├── assets/
│ │ ├── img/
│ │ │ ├── logo.png
│ │ │ └── bg.jpg
│ │ └── style.css
│ ├── components/
│ │ ├── MyComponent.vue
│ │ └──...
│ ├── main.js
│ └── App.vue
│
├── package.json
└──...
在 MyComponent.vue 中引用图片的代码如下:
<template>
<div>
<img src="@/assets/img/logo.png" alt="logo">
</div>
</template>
在本地开发环境中,图片路径 @/assets/img/logo.png 能正确解析并显示图片。打包部署到服务器后,Nginx 配置如下:
server {
listen 80;
server_name myserver.com;
root /path/to/my-vue-project/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
请问怎样才能让图片在服务器上正常显示呢?
尝试过的解决方案
检查图片路径:
确认在服务器上项目的dist目录下,图片文件确实存在于对应的路径中,通过ls命令查看无误。
检查 Vue 项目中图片引用路径,在打包后的index.html文件中,图片路径看起来是相对正确的,类似/assets/img/logo.png。
检查 Nginx 配置:
仔细检查 Nginx 配置文件,确保root指令指向了正确的项目dist目录。尝试修改try_files指令的参数顺序,问题依旧。
使用sudo nginx -t检查 Nginx 配置语法,无报错,然后用sudo systemctl reload nginx重新加载配置。
清除浏览器缓存:
在浏览器中多次清除缓存,包括强制刷新页面(Ctrl + F5),但图片仍无法显示。
检查文件权限:
确保服务器上项目目录及其所有文件权限设置正确,使用chmod -R 755 /path/to/my-vue-project/dist赋予了适当权限。
可能会有下面原因导致
图片路径问题:Vue 在本地运行时,可能使用相对路径 (./assets/image.png
),但在服务器上需要使用绝对路径 (/assets/image.png
)。
解决方案:尝试修改 vue.config.js
中的 publicPath
:
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? '/your-project-name/' : '/'
};
Nginx 配置问题:Nginx 可能未正确处理 static
资源目录。
解决方案:确保 Nginx 配置正确:
location / {
root /var/www/html/your-vue-project/dist;
index index.html;
}
location /assets/ {
root /var/www/html/your-vue-project/dist;
}
assets
目录中的静态文件打包到 dist
目录,检查 dist/assets/
是否包含图片。这个是我自己项目的配置,改下root试试
server
{
listen 80;
server_name www.alongweb.top;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/www.alongweb.top;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-74.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/www.alongweb.top.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
return 403;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 24h;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 1d;
error_log /dev/null;
access_log /dev/null;
}
gzip_static on;
location / {
#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
#try_files $uri $uri/ @router;
try_files $uri $uri/ /index.html;
index index.html index.htm index.htm.gz cms/index.html;
#强缓存配置
add_header Cache-Control "public, max-age=86400";
}
location @router {
rewrite ^.*$ /index.html last;
}
access_log /www/wwwlogs/www.alongweb.top.log;
error_log /www/wwwlogs/www.alongweb.top.error.log;
}
本文向大家介绍Vue.js项目部署到服务器的详细步骤,包括了Vue.js项目部署到服务器的详细步骤的使用技巧和注意事项,需要的朋友参考一下 前言 最近做完了一个项目,Vue.js 2.0 + vuex + axios,还是有点大的。想着做了这么久,放服务器给朋友们体验一下,帮忙找找BUG,于是就有了研究服务器这一篇文章了。 准备工作 服务器 既然是部署到服务器,肯定是需要一个云的。我这里找基友
本文向大家介绍vue项目部署到nginx/tomcat服务器的实现,包括了vue项目部署到nginx/tomcat服务器的实现的使用技巧和注意事项,需要的朋友参考一下 开发完的vue项目,需要部署到Nginx/Tomcat服务器上运行,作为一个前端小白,刚接触vue不久,研究了一番,于是写下这篇文章,记录下来便于今后部署。 1.router(history)模式vue项目部署到nginx 1)修改
本文向大家介绍Vue-cli项目部署到Nginx服务器的方法,包括了Vue-cli项目部署到Nginx服务器的方法的使用技巧和注意事项,需要的朋友参考一下 0. Nginx使用 以windows版为例,下载niginx压缩包并解压到任意目录,双击nginx.exe,在浏览器中访问http://localhost,如果出现Welcome to nginx!页面则说明成功。 nginx常用命令如下:
本文向大家介绍Vue 项目部署到服务器的问题解决方法,包括了Vue 项目部署到服务器的问题解决方法的使用技巧和注意事项,需要的朋友参考一下 相信很多小伙伴在用Vue-cli安装的脚手架开发的时候,在开发环境中项目可以很正常的运行,但是进入到生产环境,编译打包后,放入服务器,项目就不正常了,会出现空白页或者路由跳转404等问题。遇到这些问题不要慌张,正确的配置加上后端的简单配合就可以解决。 如何打包
我的网站有两个服务器——本地(ubuntu桌面上的laravel homestead)和公共(带有php7的ubuntu服务器)。我已经有了一些简单的网站,它们在我的公共服务器上运行良好,并且可以在网上看到。我在我的laravel Homestead本地服务器上创建了laravel 5.2项目,现在我想将其移动到我的公共服务器上。我压缩完整的项目文件夹(tar.gz),并使用filezilla将其
我在Laravel voyager上做了一个测试项目。我想把它发布到服务器上。 我试试这个: 初始化 git远程添加原点 *** git检出大师 git拉 添加. env 添加. htaccess php工匠迁移--force 在ProviderRepository.php第208行中:未找到类“TCG\Voyager\VoyagerServiceProvider” 怎么做? 更新: php ar
我在科尔达做了一个简单的项目。我的项目有4个节点,包括公证人和客户文件夹中的SpringBoot API。我不知道如何将我的项目部署到服务器上。我看过Corda文档,但那篇教程只针对一个节点。所以,我的问题是如何在服务器上部署具有多个节点的Corda项目,以及SpringBoot API。有人能帮我吗?
本文向大家介绍vue项目部署到Apache服务器中遇到的问题解决,包括了vue项目部署到Apache服务器中遇到的问题解决的使用技巧和注意事项,需要的朋友参考一下 最近刚重构完,我们的一个项目,由原来的jsp模式改为了前后端分离,前端选型为vue,开发完成之后第一件时间就是要部署测试,服务端选的是Apache。本来以为很简单的一件事情,几经坎坷部署了两天才算能够正常访问了。先记录如下, 过程搭建A