Chrome代理api-未捕获类型错误:无效调用



我想使用chrome代理API。我在后台脚本中有这段代码,但它不会工作

const proxyData = []
const fetchProxyData = () => {
axios({
method: "GET",
baseURL: "https://api.getproxylist.com/proxy",
params: {
protocol: "http",
allowsPost: 1,
allowsHttps: 1,
anonimity: "high anonymity"
}
}).then( (response) => {
console.log(response.data)
proxyData.push(response.data)
})
}
fetchProxyData();
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
host: proxyData.ip,
port: proxyData.port
}
}
}
chrome.proxy.settings.set({
value: config,
scope: "regular"
}, () => {
console.log(`proxy configured with data: ${proxyData}`)
})

我在后台页面控制台中收到此错误:background.js:55 Uncaught TypeError: Invalid invocation

我已经尝试了代理api文档中提供的示例,不会出现错误。也许是配置对象造成的?正如您在代码中看到的那样,为了设置代理,我正在使用ajax调用,也许这是问题所在吗?

有什么解决办法吗?

当我找到解决方案时,我也遇到过同样的问题,这是一个愚蠢的错误。

我已将字符串值传递给port

请确保将整数值传递给port

关闭。几件事。

首先,您需要在调用Chrome的代理API之前获取数据。第二,从proxyData数组中获取配置的属性,而不是从axios调用中获取JSON对象。

你需要做这样的事情:

const proxyData = [];
const fetchProxyData = () => {
axios({
method: "GET",
baseURL: "https://api.getproxylist.com/proxy",
params: {
protocol: "http",
allowsPost: 1,
allowsHttps: 1,
anonimity: "high anonymity"
}
}).then((response) => {
const {data} = response;
proxyData.push(data);
const config = {
mode: "fixed_servers",
rules: {
singleProxy: {
host: data.ip,
port: data.port
}
}
};
chrome.proxy.settings.set({
value: config,
scope: "regular"
}, () => {
console.log(`proxy configured with data: ${data}`)
});
})
};
fetchProxyData();

你的代码发生了什么。。。singleProxy(在config中(中的属性hostport被指派为undefined,因为这些属性不存在于阵列proxyData中。它们存在于您的axios调用返回的对象中(上图,data(。

undefined密钥导致Chrome抛出Invalid Invocation错误。

对于其他遇到无效调用问题的人来说,在我看来,问题通常存在于传入Chrome的配置中。特别是每个键的类型。

在我的例子中,当端口需要是一个数字时,我将其作为字符串传递。

相关内容

  • 没有找到相关文章