我想在我的AngularJS应用程序中使用CryptoJS,但是我得到了这个错误:Can't find variable: CryptoJS。
我在我的index.html中包含了这个
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/rc4.js"></script>并试图加密一些东西:
var encrypted = CryptoJS.RC4Drop.encrypt("Message", "Secret Passphrase");任何帮助都将不胜感激。
发布于 2014-12-17 08:44:54
前言:
这个问题花了我一点时间才弄清楚。我使用的是SHA1库,但实现应该是相同的。我也在使用bower来管理我的依赖项,但这不会改变你这方面的任何事情。
解决方案:
在最简单的实现中,您希望在连接所有NG依赖项之后包含Crypto依赖项(这通常位于index.html的末尾)。对我来说,我包括
<script src="https://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha1.js"></script> 在我的最后一个NG依赖项之后
<script src="bower_components/angular-route/angular-route.js"></script>然后我添加我所有的angular脚本(控制器、服务等)。
如果您正在使用Bower,可以通过以下方式安装加密库
bower install https://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha1.js --save从那里您可以调用CryptoJS.SHA1('some string');
请注意,您传入的值必须是字符串
您可以调用CryptoJS.SHA1('some string').toString();来获取散列值。
专业技巧:
您还可以创建一个可以注入到所有控件中的工厂,以便更好地管理依赖项。在我的例子中,我在大约20分钟内从MD5转到了SHA-1,这节省了大量的时间。
angular.module('someApp')
.factory('crypt', function () {
return {
hash: function (value) {
var str = JSON.stringify(value);
return CryptoJS.SHA1(str).toString();
}
};
});用于测试:
如果您正在使用karma和jasmine来测试您的应用程序,不要忘记在files部分中包含karma.conf文件的加密库路径。否则,您将得到一个持久的Can't find variable: CryptoJS错误。
https://stackoverflow.com/questions/26482494
复制相似问题