【发布时间】:2015-11-09 08:52:21
【问题描述】:
我是离子和棱角分明的新蜜蜂。我使用 Browserify 为我的 Ionic 项目需要 nodejs 的 Crypto 模块。以下是我的步骤:
- 我在 app.js 文件中添加了新行
angular.module(.....).constant('Crypto',require('crypto'))
- 我运行命令行,用 Crypto 模块的代码和 app.js 文件完美地创建新文件
浏览 app.js > bundle.js
-
我在 index.html 文件中用 bundle.js 替换 app.js
我尝试在 service.js 中测试它
angular.module('mapp.services').factory('abc',['$http','Crypto',function($http,Crypto){
返回 {
getAllProduct:function(){ console.log(Crypto.SHA256("Message")); });
} }]);
它返回消息“Crypto.SHA256 不是函数”。我认为“常量”是指一个值,而不是静态对象,因此我不能将 Crypto 传递给“常量”。那么,如何通过 Browserify 在 app.js 文件中要求所有需要的模块,然后在其他 js 文件中使用它,例如 $http? 谢谢!
【问题讨论】:
-
如果您执行
console.dir(Crypto)而不是尝试调用可能不存在的函数,您可以在控制台中获得更有用的错误消息,这将让您看到@987654322 的实际javascript 对象@call 实际上是通过 browserify 注入到你的应用程序中的。 -
我添加了 console.dir(Crypto)。它返回“0 977846 目录”。这是什么意思?而且我认为如果我将其推送到“angular.module(.....).constant('Crypto',require('crypto'))”,系统只会将其视为简单值,对吗?跨度>
-
看起来它试图将包装器导入本机系统调用但失败了。基本上所有 Crypto 在服务器上所做的都是包装 OpenSSL,因此尝试将其转换为浏览器使用只是创建一个字符串,就像您使用文件指针和 not 可以执行实际加密功能的 Crypto 对象一样.您需要切换库以使您正在做的工作。
标签: angularjs node.js cordova ionic browserify