在AngularJS应用程序中包含CryptoJS-Can't查找变量:CryptoJS
Include CryptoJS in AngularJS application - Can't find variable: CryptoJS
我想在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");
如有任何帮助,我们将不胜感激。
前言:
这件事我花了一点时间才解决。我使用的是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>
然后我添加所有的角度脚本(控制器、服务等)。
如果您使用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
错误。
相关文章:
- Javascript 变量使用 jquery 查找变量
- "可以't查找变量:cordova”;
- "可以't查找变量:window“;在suds.js中
- ReferenceError:Can't查找变量:functionName
- 在 for 循环中查找变量的迭代总和
- 按名称查找变量
- ReferenceError:Can't在AngularJS中查找变量:xxxService,Karma
- JQuery可以't从单独的javascript文件中查找变量
- 代码在shell中运行,但提供'可以't查找变量'从文件运行时出错
- 防止函数在外部作用域中查找变量
- 下划线模板:按名称查找变量
- 正则表达式用于在文本字符串中查找变量名称及其值
- 查找变量中是否存在选择器
- 可以't查找变量:FB
- 异常本机EvalAndFetch:ReferenceError:Can't查找变量:cordova
- Chutzpah-can't查找变量:module
- 在AngularJS应用程序中包含CryptoJS-Can't查找变量:CryptoJS
- ReferenceError:Can't在Safari中查找变量:ValidatorEnable
- 如何在jquery中的特定字符串中查找变量的值
- 调用JavaScript函数时出错--“;可以't查找变量“;