Open AuroraXXXX opened 3 weeks ago
代理跟nvm-desktop之间没什么关系 开启代理之后更新数据导致访问不了(比如SSL证书报错) 这个取决于你的代理节点和协议(是否是tls加密,tls加密的话你的节点就需要域名) 就算你的代理使用了域名+tls 但是有可能该域名(或者使用了cdn节点)已经被目标服务器加入黑名单(或者通过流量嗅探这种) 这样你也访问不了 这个是网络的问题
我认为你应该去系统的网络设置里添加代理 而不是nvm-desktop中设置代理
我最近在尝试使用 tauri
来重写客户端,发现这个确实可以在客户端来实现(rust
中实现简单很多),大概的代码(以获取所有版本列表的接口来举例):
pub async fn version_list(fetch: Option<bool>) -> Result<Option<Vec<NVersion>>> {
let fetch = fetch.unwrap_or(false);
if !fetch {
// return existing data directly
return Ok(Config::node().latest().get_list());
}
let mirror = Config::settings().data().get_mirror();
if mirror.is_none() {
bail!("mirror should not be null");
}
// fetch list data from remotefetch data from remote
// 这是不使用代理(系统代理模式下生效 如果开启了 TUN 模式则无效 还是会走代理)
let list = reqwest::ClientBuilder::new()
.use_rustls_tls()
.no_proxy()
.build()?
.get(format!("{}/index.json", mirror.unwrap()))
.send()
.await?
.json::<Vec<NVersion>>()
.await?;
// update list
Config::node().data().update_list(&list)?;
// 这是使用自定义代理的情况
let mut builder = reqwest::ClientBuilder::new().use_rustls_tls().no_proxy();
// 假设配置的代理服务器ip为 127.0.0.1 port为 8080
let proxy_scheme = format!("http://127.0.0.1:8080");
if let Ok(proxy) = reqwest::Proxy::http(&proxy_scheme) {
builder = builder.proxy(proxy);
}
if let Ok(proxy) = reqwest::Proxy::https(&proxy_scheme) {
builder = builder.proxy(proxy);
}
if let Ok(proxy) = reqwest::Proxy::all(&proxy_scheme) {
builder = builder.proxy(proxy);
}
let list = builder
.build()?
.get(format!("{}/index.json", &mirror))
.send()
.await?
.json::<Vec<NVersion>>()
.await?;
Ok(Some(list))
}
如果使用 tauri
重构的过程顺利的话,会把这个功能加上的 谢谢理解 🌹
我最近在尝试使用
tauri
来重写客户端,发现这个确实可以在客户端来实现(rust
中实现简单很多),大概的代码(以获取所有版本列表的接口来举例):pub async fn version_list(fetch: Option<bool>) -> Result<Option<Vec<NVersion>>> { let fetch = fetch.unwrap_or(false); if !fetch { // return existing data directly return Ok(Config::node().latest().get_list()); } let mirror = Config::settings().data().get_mirror(); if mirror.is_none() { bail!("mirror should not be null"); } // fetch list data from remotefetch data from remote // 这是不使用代理(系统代理模式下生效 如果开启了 TUN 模式则无效 还是会走代理) let list = reqwest::ClientBuilder::new() .use_rustls_tls() .no_proxy() .build()? .get(format!("{}/index.json", mirror.unwrap())) .send() .await? .json::<Vec<NVersion>>() .await?; // update list Config::node().data().update_list(&list)?; // 这是使用自定义代理的情况 let mut builder = reqwest::ClientBuilder::new().use_rustls_tls().no_proxy(); // 假设配置的代理服务器ip为 127.0.0.1 port为 8080 let proxy_scheme = format!("http://127.0.0.1:8080"); if let Ok(proxy) = reqwest::Proxy::http(&proxy_scheme) { builder = builder.proxy(proxy); } if let Ok(proxy) = reqwest::Proxy::https(&proxy_scheme) { builder = builder.proxy(proxy); } if let Ok(proxy) = reqwest::Proxy::all(&proxy_scheme) { builder = builder.proxy(proxy); } let list = builder .build()? .get(format!("{}/index.json", &mirror)) .send() .await? .json::<Vec<NVersion>>() .await?; Ok(Some(list)) }
如果使用
tauri
重构的过程顺利的话,会把这个功能加上的 谢谢理解 🌹
tauri 坑多不?
tauri 坑多不?
@BG7ZAG 目前还处于在tauri这边实现对应功能的阶段,整个开发的感受还是挺好的(vscode代码调试方面可能不是那么友好~),得益于rust,性能确实得到了很大程度的提升,主要是 rust 写起来代码确实很优雅。不过应用的打包发布和更新这块还没开始,应该会是有一些坑的,不过期间也研究了一些开源的tauri的项目,都有各自的解决方案,所以觉得使用tauri替代electron是可行的。
(目前使用的是 tauri 的 v2 beta 版本,相较于 v1,IPC通信的性能得到了非常大的提升...)
后续我会新建一个分支,把这周的进度代码上传上去,如果你有兴趣也可以一起看看~ 👍
tauri 坑多不?
@BG7ZAG 目前还处于在tauri这边实现对应功能的阶段,整个开发的感受还是挺好的(vscode代码调试方面可能不是那么友好~),得益于rust,性能确实得到了很大程度的提升,主要是 rust 写起来代码确实很优雅。不过应用的打包发布和更新这块还没开始,应该会是有一些坑的,不过期间也研究了一些开源的tauri的项目,都有各自的解决方案,所以觉得使用tauri替代electron是可行的。
(目前使用的是 tauri 的 v2 beta 版本,相较于 v1,IPC通信的性能得到了非常大的提升...)
后续我会新建一个分支,把这周的进度代码上传上去,如果你有兴趣也可以一起看看~ 👍
@BG7ZAG 代码已经上传到 tauri 分支
好勒,感谢,学习学习tauri
应用本身应该支持代理的设置,否则在某些局域网情况下,无法获取信息