如何模糊AngularJS代码?

时间:2016-01-07 09:43:54

标签: angularjs

如何模糊AngularJS代码? 我们尝试过gulp-obfuscate,但它不起作用。有人可以帮助我们吗?非常感谢!

我们这样做了

someModule.controller('MyController',[ '$scope', function($scope) {",

但成功获得像这样的混淆代码

function H͇̬͔̳̖̅̒ͥͧẸ̖͇͈͍̱̭̌͂͆͊_C͈OM̱̈́͛̈ͩ͐͊ͦEͨ̓̐S̬̘͍͕͔͊̆̑̈́̅4() {
var H͇̬͔̳̖̅̒ͥͧẸ̖͇͈͍̱̭̌͂͆͊_C͈OM̱̈́͛̈ͩ͐͊ͦEͨ̓̐S̬̘͍͕͔͊̆̑̈́̅1, H͇̬͔̳̖̅̒ͥͧẸ̖͇͈͍̱̭̌͂͆͊_C͈OM̱̈́͛̈ͩ͐͊ͦEͨ̓̐S̬̘͍͕͔͊̆̑̈́̅2, H͇̬͔̳̖̅̒ͥͧẸ̖͇͈͍̱̭̌͂͆͊_C͈OM̱̈́͛̈ͩ͐͊ͦEͨ̓̐S̬̘͍͕͔͊̆̑̈́̅3;
...
H͇̬͔̳̖̅̒ͥͧẸ̖͇͈͍̱̭̌͂͆͊_C͈OM̱̈́͛̈ͩ͐͊ͦEͨ̓̐S̬̘͍͕͔͊̆̑̈́̅3 = H͇̬͔̳̖̅̒ͥͧẸ̖͇͈͍̱̭̌͂͆͊_C͈OM̱̈́͛̈ͩ͐͊ͦEͨ̓̐S̬̘͍͕͔͊̆̑̈́̅1 + H͇̬͔̳̖̅̒ͥͧẸ̖͇͈͍̱̭̌͂͆͊_C͈OM̱̈́͛̈ͩ͐͊ͦEͨ̓̐S̬̘͍͕͔͊̆̑̈́̅2;
return H͇̬͔̳̖̅̒ͥͧẸ̖͇͈͍̱̭̌͂͆͊_C͈OM̱̈́͛̈ͩ͐͊ͦEͨ̓̐S̬̘͍͕͔͊̆̑̈́̅3;

}

app-52143d391a.js中的所有angularjs代码都没有用,它返回

Uncaught Error: [$injector:nomod] Module 'client' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

运行后

gulp.task('obfuscate', function () {
return gulp.src('../webapp/scripts/app-*.js')
    .pipe(ngAnnotate())
    .pipe(obfuscate())
    .pipe(gulp.dest('dist'));

});

一切正常,并获得以下代码:

http://pan.baidu.com/s/1ntXuGbB

然后运行以下错误:

Uncaught TypeError:  _ 206. _ 252 is not a function(anonymous function) @ app-6c38d9a2fc.js:2
generated.js:9279Uncaught Error: [$injector:modulerr] Failed to instantiate module client due to:
Error: [$injector:nomod] Module 'client' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.4.7/$injector/nomod?p0=client

1 个答案:

答案 0 :(得分:5)

来自ngDocs

  

小心:如果您计划缩小代码,您的服务名称将会得到   重命名并破坏您的应用。

要在缩小后使代码正常工作,每次使用inject时都必须使用dependancy injection属性来注释组件。因此,即使变量名称更改为angular,也会知道如何使用适当的服务映射受损变量。

e.g:

这里我们通过依赖注入传递$scope

someModule.controller('MyController', function($scope) {

要使这条线工作,你必须改为:

someModule.controller('MyController',[ '$scope', function($scope) {

或者:

MyController.$inject = ['$scope'];
someModule.controller('MyController', function($scope) {

甚至更好。
在完成所有适合您的完成任务之前使用gulp-ng-annotate

更新

在Obsfucation之后你应该看到$ inject字符串作为它们的位置,而这个插件也会使它们受阻。含义:

['$http', function($http) {

变为:

[ "ಠ_ಠ727", function( ಠ_ಠ727 ) 

而不是:

[ "$http", function( ಠ_ಠ727 ) 

github

存在相关问题

我建议你使用另一个插件。有了gulp-uglify,我没有任何问题。