如何使用Closure Compiler查找window.crypto?

问题描述 投票:1回答:1

我是javascript的新手,正在研究使用闭包编译器v20120917将原始javascript包编译为单个缩小的js文件的现有包。

我正在尝试使用加密货币:

function computeChallenge(buffer) {
    return window.crypto.subtle.digest('SHA-256', buffer); 
}

但是Closure编译器抛出错误:ERROR - Property subtle never defined on Window.prototype.crypto

我可以在浏览器控制台上运行它,并且工作正常。为什么闭包编译器找不到该方法?我需要导入一些文件,我该怎么做?

javascript google-closure-compiler
1个回答
0
投票

[Closure Compiler 2012版本太旧,缺少很多全局变量的外部选项,而Closure Compiler高级将需要它们,否则它将被视为可操纵的属性(随后将其视为无操作)。

这里有一些来自Google的预构建外部代码,您应该可以直接使用它们,以便可以使用crypto API(和其他新API):

对于您要使用的任何库(不将其捆绑并与程序一起编译),您必须声明externs以防止损坏:Declaring Externs Docs这样,Closure Compiler便知道它们是已存在且不应被篡改的函数和对象的名称。例如:

// myexterns.js
function MyExternFunction(){};
window["MyGlobalVariable"];

此文档说明了您为什么需要外部代码以及修改如何影响代码的原因:Restrictions for Advanced Optimizations Docs

© www.soinside.com 2019 - 2024. All rights reserved.