nginx服务器上部署vue项目,刷新或者打开新窗口时出现404的解决方法【转载】【实用】

https://blog.youkuaiyun.com/qq_42498327/article/details/105475421

<think>我们分析用户的问题:用户复制了一个Vue2项目,修改了端口,但启动后访问的仍是原项目。根据之前的回答,用户应该已经修改了package.json中的端口和vue.config.js中的端口配置。但问题仍然存在,说明可能有其他原因导致端口修改未生效。可能的原因及解决方案:1.缓存问题:Vue项目发模式下,webpack-dev-server可能会缓存配置。需要清除缓存再启动。2.配置文件未生效:可能修改的配置文件(如vue.config.js)不在正确的位置,或者配置有误。3.同运行了两个项目:如果两个项目都在运行,即使修改了端口,浏览器可能缓存了旧项目的页面,导致跳转到旧项目。4.环境变量冲突:如果项目使用了环境变量来设置端口,可能环境变量覆盖了配置文件的设置。具体解决步骤:步骤1:确保正确修改端口-检查package.json中是否设置了端口(如果有的话):```json"scripts":{"serve":"vue-cli-serviceserve--port8081",}```-检查vue.config.js中的devServer配置:```javascriptdevServer:{port:8081,//确保这里是你设置的端口}```步骤2:清除缓存-尝试删除node_modules/.cache目录(这是webpack的缓存目录):```bashrm-rfnode_modules/.cache```-然后重启动项目。步骤3:确保原项目已停止-检查是否有其他终端正在运行原项目,确保原项目已经停止(可以通过任务管理器关闭占用原端口的进程)。步骤4:检查环境变量-检查项目根目录下是否有.env文件,其中可能设置了端口:```PORT=8081```步骤5:强制使用端口启动-在启动命令中显式指定端口:```bashnpmrunserve----port8081```步骤6:检查端口占用情况-使用命令查看端口是否被占用(以8081为例):```bashlsof-i:8081#对于Mac或Linuxnetstat-ano|findstr:8081#对于Windows```-如果被占用,则杀死占用进程或换一个端口。步骤7:检查浏览器缓存-尝试在浏览器中打开无痕窗口访问端口。如果以上步骤都确认无误,通常可以解决问题。另外,用户提到“启动的候,发现他俩是一个项目”,可能是由于浏览器缓存了原项目的页面,或者两个项目构建后的内容相同(如果访问的是build后的dist,那么需要重build项目部署到不同的路径)。但是,用户是在发模式下运行(npmrunserve),所以重点在于服务器的端口配置。根据引用[3]中的经验,有候需要重构建项目(npmrunbuild)来更生产环境,但这里用户是在发环境,所以重构建不是必须的。不过,如果用户曾经构建过旧项目部署到本地服务器(比如nginx),那么可能访问的是构建后的内容,而不是服务器。所以需要确认用户访问的是服务器(如http://localhost:端口)还是构建后部署的路径。因此,请用户确认:-启动项目后,控制台输出的访问地址是什么?是否是端口?-是否通过这个地址访问的?如果控制台输出的就是旧端口,说明配置没有生效,需要检查配置文件和启动命令。如果控制台输出的是端口,但访问后显示的还是原项目,那么可能是浏览器缓存或者代理问题(例如nginx反向代理仍然指向旧项目)。这需要清除浏览器缓存,或者检查本地代理设置(如hosts文件、nginx配置等,参考引用[2]和引用[4])。引用[2]提到修改host文件或使用代理,如果用户之前配置过host将域名指向本地,而现在两个项目使用同一个域名,那么就会指向同一个项目。所以需要确保两个项目使用不同的域名或端口来访问。引用[4]是关于nginx部署的配置,如果用户同使用了nginx代理,那么需要为项目配置nginxlocation,并指向端口。综上所述,解决步骤总结如下:1.确认项目的端口配置已正确修改(package.json脚本、vue.config.js、.env文件)。2.清除项目缓存(node_modules/.cache)。3.停止原项目的运行。4.使用端口启动项目,并注意控制台输出的访问地址。5.使用无痕窗口访问地址,避免浏览器缓存。6.如果使用过代理(如nginx),检查代理配置是否指向端口,或者关闭代理直接访问服务器。7.如果使用过hosts文件将域名指向本地,尝试暂注释掉相关配置,直接使用localhost:端口访问。如果用户按照以上步骤操作,应该可以解决问题。相关问题:1.Vue项目如何清除webpack缓存?2.如何查看端口占用并释放端口?3.Vue项目配置环境变量的方法有哪些?4.如何配置多个Vue项目使用同一个域名不同路径?5.浏览器缓存导致Vue项目不生效怎么办?</think>### 解决 Vue2 项目复制后修改端口无效的问题 当复制 Vue2 项目后修改端口仍访问原项目,通常由以下原因导致。请按顺序排查: #### 🔧 核心排查步骤 1. **清除构建缓存**(最关键步骤) ```bash # 删除依赖和缓存 rm -rf node_modules .cache dist # 重安装依赖 npm install # 重启服务器 npm run serve ``` **原因**:Webpack 缓存可能导致旧配置残留[^3]。 2. **验证端口配置** ```javascript // vue.config.js module.exports = { devServer: { port: 8081, // 确保此处是端口 open: true // 启动自动打开浏览器 } } ``` **测试**:手动访问 `http://localhost:8081`(避免浏览器缓存) 3. **检查环境变量冲突** ```bash # 检查项目根目录下.env文件 cat .env* ``` 删除所有包含 `PORT=` 的配置行(环境变量优先级高于配置文件)[^4]。 4. **终止原项目进程** ```bash # 查找占用旧端口的进程(如8080) lsof -i :8080 # Mac/Linux netstat -ano | findstr :8080 # Windows # 强制终止进程 kill -9 <PID> # Mac/Linux taskkill /F /PID <PID> # Windows ``` #### ⚠️ 其他可能原因 1. **浏览器缓存问题** - 使用隐身模式访问 - 清除浏览器缓存或硬刷新 (`Ctrl+Shift+R`) 2. **代理配置残留** 检查 `vue.config.js` 中是否有旧代理配置: ```javascript devServer: { proxy: { // 确保此处代理路径指向服务 '/api': { target: 'http://localhost:后端端口' } } } ``` 3. **路由路径冲突** ```javascript
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值