Expo深度链接携带参数跳转时报Cannot GET /错误如何解决?
问题原因
- Expo本地开发服务器的路由解析默认会把端口后直接拼接的查询参数当成静态资源请求的一部分,无法匹配到对应资源时就会返回你看到的404 HTML错误内容。
- 你使用的深度链接传参格式不符合Expo开发环境的规范,参数不能直接拼接在服务地址端口后。
解决方案
调整深度链接格式,在端口和查询参数之间添加Expo预留的深度链接标识
/--/,修改后的链接如下:exp://192.168.xxx.xxx:19000/--/?param=test
这个标识会告知开发服务器后续内容为应用内路由和参数,不会按照静态资源请求解析。可以通过Expo官方的Linking模块验证参数是否正常接收,参考代码示例:
import { useEffect } from 'react'; import * as Linking from 'expo-linking'; export default function App() { useEffect(() => { // 处理应用首次启动由深度链接打开的场景 const handleInitialLink = async () => { const initialUrl = await Linking.getInitialURL(); if (initialUrl) { const parsedLink = Linking.parse(initialUrl); // 输出 { param: 'test' } console.log('携带的参数', parsedLink.queryParams); } }; handleInitialLink(); // 处理应用在后台时由深度链接唤起的场景 const linkSubscription = Linking.addEventListener('url', (event) => { const parsedLink = Linking.parse(event.url); console.log('携带的参数', parsedLink.queryParams); }); return () => { linkSubscription.remove(); }; }, []); // 其他应用逻辑 return null; }
补充说明:生产环境打包后配置了自定义URL Scheme的场景下,直接使用
你的自定义scheme://?param=test格式即可正常传参,不需要添加/--/前缀。
内容的提问来源于stack exchange,提问作者Samuel Dostál
相关产品推荐
相关产品推荐

