Chrome 扩展程序 - 无法在后台加载外部脚本.js



我有一个chrome扩展名。我无法调用外部脚本来处理后台脚本内部的以太坊 (web3.min.js.js。尝试调用脚本时出现此错误:

Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'self' blob: filesystem:".

到目前为止,我尝试过:
1. 将脚本下载到扩展文件夹,将其添加到 manifest.json:

"background":{"scripts":["web3.min.js", "background.js"]}

它包含它,但在包含的文件内给出相同的错误,因为它依次使用其他库。 2. 使用 XMLHttp 请求:

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://cdn.jsdelivr.net/gh/ethereum/web3.js@1.0.0-beta.34/dist/web3.min.js", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var resp = eval("(" + xhr.responseText + ")");
}
}
xhr.send();
  1. 将其附加到 dom

    var script = document.createElement("script");
    script.src = "./web3.min.js";
    document.head.appendChild(script);
    

这些解决方案都不适合我。我知道这是出于安全原因,但没有任何解决方案吗?我只想在我的扩展中包含 web3。

我相信,如果您安装软件包并导入它附带的缩小版本,您应该能够在后台脚本中使用web3.js

npm i --save web3
import Web3 from 'web3/dist/web3.min.js';
...
const web3 = new Web3(Web3.givenProvider || provider);
const contract = new web3.eth.Contract(abi, contractAddress);

如果这仍然不起作用,我认为web.js项目自述文件提供了有关故障排除的更多详细信息。

最新更新