html5-qrcode 库要求必须在 HTTPS 或 localhost 环境下才能访问摄像头。
你当前的环境是局域网 IP(192.168.10.7),不是 HTTPS,所以浏览器拒绝访问摄像头。
ngrok-v3-stable-windows-amd64.zip)D:\tools\ngrok# 打开命令行,进入 ngrok 目录
cd D:\tools\ngrok
# 配置 authtoken(替换为你的 token)
ngrok config add-authtoken YOUR_AUTHTOKEN_HERE
cd D:\java_project\forge-admin\forge-h5-ui
pnpm dev:h5
假设前端运行在 3001 端口(查看控制台输出确认实际端口)。
# 方法1:直接启动(推荐)
ngrok http 3001
# 方法2:指定域名(如果你有付费计划)
ngrok http --domain=your-domain.ngrok-free.app 3001
启动成功后,你会看到类似这样的输出:
Forwarding https://abc123def456.ngrok-free.app -> http://localhost:3001
在手机浏览器中访问 ngrok 提供的 HTTPS URL,例如:
https://abc123def456.ngrok-free.app
注意:
http://192.168.10.7:3001https://xxx.ngrok-free.appA: 是的,免费版有以下限制:
如果需要固定域名,可以升级到付费计划。
A: 花生壳免费版不支持 HTTPS 映射,而 html5-qrcode 必须要求 HTTPS。
A: 有的,可以使用以下工具:
npm install -g localtunnel && lt --port 3001ssh -R 80:localhost:3001 serveo.netA: 支付宝内置 WebView 强制要求 HTTPS,即使使用 ngrok 也可能有问题。建议:
打开浏览器控制台(F12),如果看到以下日志,说明摄像头已正常启动:
[QR Scanner] Camera started successfully
如果看到错误信息,请检查: