在AngularJS应用程序中包含CryptoJS-Can't查找变量:CryptoJS

Include CryptoJS in AngularJS application - Can't find variable: CryptoJS

本文关键字:查找 变量 CryptoJS 应用程序 AngularJS 包含 CryptoJS-Can      更新时间:2023-09-26

我想在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错误。