稀土掘金技术社区 01月04日
啊?两个vite项目怎么共用一个端口号啊
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文记录了一次在使用Vite进行微前端项目开发时遇到的端口冲突问题。当主项目通过微前端wujie嵌套子项目,并规定子项目端口号为5173时,后续创建的Vite项目未能自动更新端口号。经过查阅官方文档和多次尝试,发现是由于其中一个项目将host配置为0.0.0.0,导致Vite的端口检测机制失效。最终通过统一设置host解决了问题,同时也强调了在遇到问题时,要勇于猜想、尝试,并积极查阅官方文档的重要性。

💡**问题背景**: 主项目通过微前端wujie嵌套子项目,为方便通信,子项目端口被设定为5173,导致后续创建的Vite项目无法自动更新端口号。

🧐**寻因过程**: 通过查阅Vite官方文档,发现`server.port`配置并不能解决问题。尝试不同Vite版本也无法解决。最终发现`server.host`配置为`0.0.0.0`时,Vite不会自动尝试更新端口号。

🎯**问题根源**: Vite端口检测机制在对比端口号之前会先对比host,微前端项目设置了host为`0.0.0.0`,而新建项目默认host为`localhost`,导致对比失败,Vite不会自动尝试下一个可用端口。

✅**解决方案**: 通过将两个项目的host都设置为相同的值,例如`localhost`,Vite会自动尝试更新端口号,避免端口冲突。

原创 寻找光_sxy 2025-01-04 09:01 重庆

点击关注公众号,“技术干货”及时达!

点击关注公众号,“技术干货” 及时达!

问题:

最近在业务开发中遇到一个问题,问题是这样的,当前有一个主项目和一个子项目,主项目通过微前端wujie来嵌套这个子项目,其中呢为了方便项目之间进行通信,所以规定该子项目的端口号必须为5173,否则通信失败,但是这时候发现一个问题,当我启动了该子项目后:

该项目的端口号为5173,但是此时我再次通过vite的官方搭建一个react+ts+vite项目:npm create vite@latest react_demos -- --template react-ts,之后通过npm run dev启动项目,发现端口号并没有更新:

这是什么原因呢?

寻因:

查阅官方文档,我发现:

那么我主动在vite.config.ts中添加这个配置:

正常来说,会出现这个报错:

但是此时结果依然为:

我百思不得不得其解,于是再次查阅官方文档:

我寻思这也与文档描述不一致啊,于是我再次尝试,思考是不是vite版本号的问题,两个项目的版本号分别为:

我决定创建一个4版本的项目npm create vite@^4.1.4 react_demos3 -- --template react-ts

结果发现,还是有这个问题,跟版本号没有关系,于是我又耐心继续看官方文档,看到了这个配置:

我抱着试试的态度,在其中一个vite项目中添加这个配置:

发现,果然是这个配置的锅,当其中一个项目host配置为0.0.0.0时,vite不会自动尝试更新端口号

难道vite的端口监测机制与host也有关?

结果:

不甘心的我再次进行尝试,将两个项目的host都设置成:

vite会自动尝试更新端口号

「原来如此,vite的端口号检测机制在对比端口号之前,会先对比host,由于我的微前端项目中设置了host,而新建的项目中没有设置host,新建的项目host默认值为localhost对比不成功,vite不会自动尝试下一个可用端口,而是共用一个端口」

总结:

在遇到问题时,要多多去猜,去想各种可能,并且最重要的是去尝试各种可能,还要加上积极去翻阅官方文档,问题一定会得到解决的;哪怕不能解决,那也会在尝试中,学到很多东西

点击关注公众号,“技术干货” 及时达!

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Vite 端口冲突 微前端 host配置 问题排查
相关文章