首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AngularJS应用程序中包含CryptoJS -找不到变量: CryptoJS

在AngularJS应用程序中包含CryptoJS -找不到变量: CryptoJS
EN

Stack Overflow用户
提问于 2014-10-21 16:46:58
回答 1查看 16.6K关注 0票数 4

我想在我的AngularJS应用程序中使用CryptoJS,但是我得到了这个错误:Can't find variable: CryptoJS

我在我的index.html中包含了这个

代码语言:javascript
复制
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/rc4.js"></script>

并试图加密一些东西:

代码语言:javascript
复制
var encrypted = CryptoJS.RC4Drop.encrypt("Message", "Secret Passphrase");

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-17 08:44:54

前言:

这个问题花了我一点时间才弄清楚。我使用的是SHA1库,但实现应该是相同的。我也在使用bower来管理我的依赖项,但这不会改变你这方面的任何事情。

解决方案:

在最简单的实现中,您希望在连接所有NG依赖项之后包含Crypto依赖项(这通常位于index.html的末尾)。对我来说,我包括

代码语言:javascript
复制
<script src="https://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha1.js"></script> 

在我的最后一个NG依赖项之后

代码语言:javascript
复制
<script src="bower_components/angular-route/angular-route.js"></script>

然后我添加我所有的angular脚本(控制器、服务等)。

如果您正在使用Bower,可以通过以下方式安装加密库

代码语言:javascript
复制
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,这节省了大量的时间。

代码语言:javascript
复制
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错误。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26482494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档