【问题标题】:Execution order for Code obfuscation代码混淆的执行顺序
【发布时间】:2016-05-03 23:20:15
【问题描述】:

我正在尝试使用 gulp 实用程序混淆我的 JS 代码。 [离子应用]

gulp.task('ng_annotate_app',function (done) {
      gulp.src(['!www/js/toaster.min.js','www/js/*.js','www/common/*.js'])
        .pipe(strip())
          .pipe(stripDebug())
          .pipe(rename({
              suffix: ".min",
              extname: ".js"
          }))
          .pipe(uglify({mangle: false}))
          .pipe(ngAnnotate({single_quotes: true}))
          .(obfuscate())
      .pipe(gulp.dest('www/dist'))
      .on('end', done);
    });

我在文件 a.js 中有我的 angular 模块启动器,在 b.js 中有工厂,如下所示。 a.js:

var mod=angular.module ...

b.js

mod.factory ...

a.js 中的 var mod 被混淆为一些虚拟字符串,但在 b.js 中它没有改变。因此我的应用程序显示错误并且无法运行。

感谢您的帮助!

【问题讨论】:

    标签: javascript ionic-framework gulp


    【解决方案1】:

    在我看来,不要使用从一个文件到另一个文件的变量。您可以使用angular.module('<Your module name>').factory,而不是使用mod.factory

    或者您可以将相关文件分组到另一个模块中,例如angular.module('<another module name>',[]).factory 然后将此模块包含在主模块文件的依赖项中(主要是app.js)angular.module('myApp', ['<another module name>'])

    【讨论】:

    • 感谢您的回复。我现在可以通过在 app.js 中声明和使用相同的变量来调用,但在 $httpProvider.defaults.headers.delete 中,这里的标头被混淆了,因此删除失败导致未定义的错误。
    • 对此有什么想法吗?
    【解决方案2】:

    我遇到了同样的问题..您需要使用一个工具来确保它查看所有提交的文件并在所有文件上保持相同的名称,而不破坏任何依赖关系。 Jscrambler 保证并为我工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 2023-04-08
      相关资源
      最近更新 更多