要让手机访问电脑上运行的前端开发服务器(比如 Vite、Webpack Dev Server、http-server 等),核心原理是让手机和电脑处于同一局域网,并让服务器监听局域网的 IP 地址。下面是完整步骤和常见问题解决方法。
1. 基本条件
- 手机和电脑连接同一个 Wi-Fi(或者电脑用网线、手机连同一路由器的 Wi-Fi)。
- 电脑上已经启动了一个前端开发服务器(例如
http://localhost:3000能正常访问)。
2. 获取电脑的局域网 IP
Windows
- 打开命令提示符(CMD),输入
ipconfig - 找到正在使用的网络适配器(通常是"无线局域网适配器 Wi-Fi"或"以太网适配器"),记下 IPv4 地址 ,例如
192.168.1.100

macOS / Linux
- 打开终端,输入
ifconfig或ip addr - 找到
en0(Wi-Fi)或eth0(有线),找到inet后面的地址,例如192.168.1.100
3. 配置服务器允许局域网访问
不同的开发服务器默认只监听 localhost(127.0.0.1),需要改为监听 0.0.0.0(所有网络接口)。
常见工具配置方法
| 工具 / 框架 | 如何允许局域网访问 |
|---|---|
| Vite | 默认支持。启动时自动显示 Network 地址,或运行 npm run dev -- --host,或在项目的 vite.config.js 文件中,你可以添加一个 server 配置,将 host 设置为 '0.0.0.0'。这样,你的服务就会监听所有网络接口,包括局域网和公网地址。例如:import { defineConfig } from 'vite'; export default defineConfig({ server: { host: '0.0.0.0' } }); |
| Create React App | 默认支持。启动后控制台会显示局域网地址,如 http://192.168.1.100:3000 |
| Webpack Dev Server | 在配置中添加 host: '0.0.0.0'(或在 package.json 的 scripts 中加 --host 0.0.0.0) |
| http-server | 运行时加参数:http-server -a 0.0.0.0 |
| Next.js | 运行 npm run dev -H 0.0.0.0 或在 package.json 中加 -H 0.0.0.0 |
| Angular CLI | ng serve --host 0.0.0.0 |
示例(Vite):
bash
npm run dev -- --host
或:
js
import { defineConfig } from 'vite';
export default defineConfig({
server: { host: '0.0.0.0' }
});
控制台会输出类似:
➜ Local: http://localhost:5173/
➜ Network: http://192.168.1.100:5173/
4. 检查并关闭电脑防火墙(或添加规则)
Windows:
- 打开"Windows 安全中心" → "防火墙和网络保护" → "允许应用通过防火墙"
- 找到你的 Node.js 或对应程序,勾选"专用"和"公用"
- 或者临时关闭防火墙测试(不建议长期关闭)
macOS:
- 系统设置 → 网络 → 防火墙 → 允许指定程序通过
Linux (Ubuntu):
bash
sudo ufw allow 3000 # 以端口3000为例
5. 用手机访问
- 手机浏览器地址栏输入:
http://电脑的局域网IP:端口号 - 例如:
http://192.168.1.100:3000
如果能正常打开,说明成功。
常见问题及解决办法
❌ 手机无法访问,连接超时
- 原因 1:不在同一局域网。检查手机 Wi-Fi 名称是否和电脑一致(电脑如果用网线,确保和手机 Wi-Fi 是同一个路由器下的网段)。
- 原因 2:防火墙阻止。临时关闭电脑防火墙测试。
- 原因 3 :服务器没有监听
0.0.0.0。回到第 3 步重新启动服务器。 - 原因 4 :端口被占用或服务器崩溃。确保电脑上
localhost:端口能正常访问。
❌ 手机访问时提示"不安全"或无法加载资源(HTTPS 问题)
- 如果你的网页需要调用摄像头、地理位置等 API,浏览器可能强制要求 HTTPS。
- 解决办法 :
- 使用内网穿透工具(如 ngrok)提供 HTTPS 地址。
- 或者在手机上临时访问
http://版本(部分 iOS 默认允许 http,但某些功能受限)。 - iOS 可尝试关闭"自动检测网站是否支持 HTTPS"等实验性选项。
❌ 手机访问样式/资源加载不出来
- 页面中使用了
//localhost:3000/xxx.js这样的绝对路径,或http://127.0.0.1的硬编码资源。 - 解决办法:使用相对路径或根据环境变量动态设置资源 URL。
❌ 刷新页面后接口请求失败(跨域或后端地址写死)
- 前端请求后端 API 时如果写的是
http://localhost:8080,手机无法识别。 - 解决办法:将 API 地址改为电脑的局域网 IP,或使用代理配置。
备选方案(不在同一局域网时)
如果你和手机不在同一个网络(比如电脑在公司,手机用流量),可以使用内网穿透工具:
- ngrok :
ngrok http 3000→ 生成一个公网 https 地址,手机直接访问该地址。 - localtunnel :
lt --port 3000 - serveo :
ssh -R 80:localhost:3000 serveo.net
这些工具会自动处理防火墙、HTTPS 等问题,适合临时远程演示。
总结命令速查
| 场景 | 命令 |
|---|---|
| Vite 允许局域网 | npm run dev -- --host |
| Webpack Dev Server | 在配置中加 host: '0.0.0.0' |
| 获取电脑 IP(Win) | ipconfig |
| 获取电脑 IP(Mac/Linux) | ifconfig 或 ip addr |
| 临时关闭 Windows 防火墙(测试) | netsh advfirewall set allprofiles state off |
按照以上步骤操作,绝大多数情况都能顺利用手机访问电脑上的前端页面。如果仍遇到问题,请提供你使用的具体工具和错误现象,我可以进一步帮你分析。