Closed xiaolizi9 closed 3 years ago
@XiaoLizi29 首先,这位同学, 你问题就提的不充分。 另外,你群里微信打开 插件失效 我们这都没有复现。
建议按照 bug issue 中 To Reproduce
提供下详细的必现路径以便我们 debug
@XiaoLizi29 首先,这位同学, 你问题就提的不充分。 另外,你群里微信打开 插件失效 我们这都没有复现。
用任意一个脚手架起一个服务,在真机上可以正常使用svrx的插件,但是微信内置浏览器全部失效,这个表述的已经很清楚了
建议按照 bug issue 中
To Reproduce
提供下详细的必现路径以便我们 debug
本来是看了你的网易前端高级课来的,对徐老师很敬佩,现在这种态度解决bug对这个插件很失望
@XiaoLizi29 理解你的情绪。 这边曾经按照你的描述,尝试复现,路径是:
vconsole
qrcode
插件 svrx --vconsole --qrcode
实际结果是,手机页面显示正常,vconsole
和 qrcode
也在微信浏览器中有显示且功能正常,当时是想让你提供更具体的描述。
在真机上可以正常使用svrx的插件,但是微信内置浏览器全部失效
所以你看下是不是要补充下具体指的是什么插件失效了?
@XiaoLizi29 理解你的情绪。 这边曾经按照你的描述,尝试复现,路径是:
- svrx 启动一个服务, 引入了测试用的
vconsole
qrcode
插件svrx --vconsole --qrcode
- 电脑访问本机ip+服务端口,可以看到页面展示了 vconsole 及页面二维码
- 使用和电脑连入同一个内网的手机,打开微信扫一扫,扫码进入该页面
实际结果是,手机页面显示正常,
vconsole
和qrcode
也在微信浏览器中有显示且功能正常,当时是想让你提供更具体的描述。在真机上可以正常使用svrx的插件,但是微信内置浏览器全部失效
所以你看下是不是要补充下具体指的是什么插件失效了?
我又试了一下,这样子是正常的。但是如果使用charles就不能行了,我是使用了charles的map功能,将线上的资源map到本地,然后线上的资源的确是map到本地了,但是没有出现qrcode这些面板
我是使用了charles的map功能,将线上的资源map到本地
所以我理解你是代理了线上的请求,然后把请求里的部分静态资源 map 到本地用 svrx 启的服务上的静态资源?
如果是这样,插件失效是必然的,插件之所以可以在页面看到是因为 svrx 往 html 页面里注入了 /svrx/svrx-client.js
和 /svrx/svrx-client.css
。
所以你的场景 svrx 暂时支持得还不是很好,这个 issue 可以先开着,有了进展会这里同步。
另外,可能是 @xuchaoying 脾气太好了,你这种语气压根不像来交流的,这种 issue 在开源社区大概率是直接关掉的。
我是使用了charles的map功能,将线上的资源map到本地
所以我理解你是代理了线上的请求,然后把请求里的部分静态资源 map 到本地用 svrx 启的服务上的静态资源?
如果是这样,插件失效是必然的,插件之所以可以在页面看到是因为 svrx 往 html 页面里注入了
/svrx/svrx-client.js
和/svrx/svrx-client.css
。所以你的场景 svrx 暂时支持得还不是很好,这个 issue 可以先开着,有了进展会这里同步。
我这边是把所有的静态资源都用charles然后map到了本地,所以html也map了,按理说应该是可以展示qrcode这些面板的,结果却没有出现,但是html的确是map成功了。
然后我又查看了源码,发现html虽然map成功了,但是svrx里面引用的js和css却报404,因为这些资源被分配在了不同的路径下,报错信息是这样的:
又对这些报错的资源写了相对应的规则 这样子是正常了,就是结合charles写规则的时候有点繁琐,试问可以优化成svrx的所有插件都在svrx/路径下吗,这样子只需写一条规则就可以解决了,现在的svrx插件的资源是这样子分布的,有点乱:
还有就是配置文件可否增加一项配置,可以把svrx的插件通过webpack打包进去,如果能打包进去的话,和charles结合使用会更舒服
另外,可能是 @xuchaoying 脾气太好了,你这种语气压根不像来交流的,这种 issue 在开源社区大概率是直接关掉的。
我语气不好这点我向你们致歉。但是你要说我不是来交流的,那你说错了,如果我不是来交流了,我就不会去看svrx的文档,看svrx的两篇文章,又提issue,又加交流群了,正是得不到回复才会这样子,如果你关掉这条issue,那可能后面想提issue的用户都不会提了,因为不解决问题就关掉,在我看来是没有开源精神的。
试问可以优化成svrx的所有插件都在svrx/路径下吗
理论上是可以的,这个我们评估下
但是,需要补充的是,你把所有静态资源都代理到本地了,只是为了使用线上的接口?那么如微信群里 @xuchaoying 一开始就提到的,你可能更需要是 svrx proxy 能力,不需要 charles。
正是得不到回复才会这样子
如果你一开始就把你怎么用 charles 映射的说明白,肯定是会得到正确的回复的,有些表述你可能觉得理所当然,但是局外人因为缺少上下文,所以就会去猜,还要一遍遍跟你确认,这会耽误一些时间
然后,既然你提到开源精神,那可以继续探讨下,其实开源社区最希望看到的是两类行为:
最后,有几个文章可以看看:
那么如微信群里 @xuchaoying 一开始就提到的,你可能更需要是 svrx proxy 能力,不需要 charles。
其实我这边的业务场景是需要调试打包后的代码,所以svrx proxy这种方式解决不了,如果配置文件能提供参数可以把svrx的插件打包进代码是更好的
最后,有几个文章可以看看:
您推荐的这些文章我下去好好看看。主要是我的业务场景是结合Charles使用的,主要问题是出在打包后的代码,所以通过PR和sandbox也无法复现,还请谅解
还有就是,比如在开发微信网页的时候,用本地服务使用svrx proxy这种方式测试比如授权这种业务的时候,会出现“和公众平台的域名不一致”,因为公众平台配置的是www.XX.com,本地却是用ip地址的,所以开发微信生态的时候使用Charles的map功能很关键。 所以这种情况使用Charles的map就仅仅是为了使用线上的接口,而svrx proxy却满足不了需求
试问可以优化成svrx的所有插件都在svrx/路径下吗
理论上是可以的,这个我们评估下
但是,需要补充的是,你把所有静态资源都代理到本地了,只是为了使用线上的接口?那么如微信群里 @xuchaoying 一开始就提到的,你可能更需要是 svrx proxy 能力,不需要 charles。
正是得不到回复才会这样子
如果你一开始就把你怎么用 charles 映射的说明白,肯定是会得到正确的回复的,有些表述你可能觉得理所当然,但是局外人因为缺少上下文,所以就会去猜,还要一遍遍跟你确认,这会耽误一些时间
然后,既然你提到开源精神,那可以继续探讨下,其实开源社区最希望看到的是两类行为:
- 直接提 PR
- 遇到问题描述清楚,最好有完整的复现链路
最后,有几个文章可以看看:
还有就是,比如在开发微信网页的时候,用本地服务使用svrx proxy这种方式测试比如“微信授权”这种业务的时候,会出现“和公众平台的域名不一致”,因为公众平台配置的是www.XX.com,本地却是用ip地址的,所以开发微信生态的时候使用Charles的map功能很关键。 所以这种情况使用Charles的map就仅仅是为了使用线上的接口,而svrx proxy却满足不了需求
因为公众平台配置的是www.XX.com,本地却是用ip地址的
这种情况可以尝试将 proxy.changeOrigin
设置为 true
, 见 proxy 选项
这种情况可以尝试将
proxy.changeOrigin
设置为true
, 见 proxy 选项
这种方式也是不可行的,改变changeOrigin只能保证请求的源是变成域名的形式了,但是webpack起的服务还是ip地址的形式,所以还会报“和公众平台的域名不一致”的错误,除非有办法可以让webpack起的服务变成“微信公众平台”配置的域名,然而这种想法是没有办法解决的
如果还有问题可以开具体的issue提问
Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like A clear and concise description of what you want to happen.
Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.
Additional context Add any other context or screenshots about the feature request here.