You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展修改代理设置报错TypeError: Invalid Invocation求助

解决Chrome扩展Native Messaging回调中设置代理的"Invalid Invocation"错误

可能的原因及修复方案

1. 检查扩展权限配置

确保你的manifest.json中已正确声明所需权限:

{
  "permissions": ["proxy"],
  "host_permissions": ["<all_urls>"]
}

没有proxy权限直接调用chrome.proxy.settings.set会触发无效调用错误,host_permissions用于确保扩展有权限修改网络设置。

2. 验证代理配置参数的有效性

确保Data.Host和Data.Port是合法值:

  • Data.Host不能是空字符串或无效域名/IP
  • Data.Port转换为整数后必须在1-65535范围内
    可以在调用API前加入参数校验:
function applyNetwork(Data) {
  // 参数校验
  if (!Data?.Host || typeof Data.Host !== 'string') {
    console.error('无效的代理主机地址');
    return;
  }
  const port = parseInt(Data.Port);
  if (isNaN(port) || port < 1 || port > 65535) {
    console.error('无效的代理端口');
    return;
  }

  var config = {
    mode: "fixed_servers",
    rules: {
      singleProxy: {
        scheme: "socks5",
        host: Data.Host,
        port: port
      }
    }
  };
  chrome.proxy.settings.set({value: config, scope: "regular"}, function() {
    // 加入错误捕获,查看具体错误信息
    if (chrome.runtime.lastError) {
      console.error('设置代理失败:', chrome.runtime.lastError.message);
    }
  });
}

3. 捕获API调用的具体错误

在回调函数中加入chrome.runtime.lastError的检查,能获取更详细的错误信息,帮助定位问题:

chrome.proxy.settings.set({value: config, scope: "regular"}, function() {
  if (chrome.runtime.lastError) {
    console.error('代理设置错误详情:', chrome.runtime.lastError);
  }
});

4. 确认Native Messaging回调的上下文

确保port.onMessage.addListener绑定的回调是在扩展的后台脚本(background.js)中执行,Chrome的proxyAPI仅允许在后台上下文或弹出页调用,Native Messaging的回调本身属于后台上下文,这一点通常没问题,但如果你的扩展使用了拆分的后台脚本,需要确认脚本有权限调用API。


内容的提问来源于stack exchange,提问作者SantK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:45:30