我有一个网站的几个小Javascript文件。此时,我使用脚本将它们放入文件中,然后运行terser以最小化它。使用最小化版本,网站运行没有任何问题。
现在我想用JavaScript-Obfuscator (https://obfuscator.io/)混淆它。我创建了一个gulp任务来生成混淆的版本
gulp.task('obfus', function() {
gulp.src('src/main/webapp/js/mysite.min.js')
.pipe(javascriptObfuscator({
compact: true
})).pipe(gulp.dest('src/main/webapp/js/dist'));
});
然而,我在运行网站时得到了这个错误:
Uncaught ReferenceError: loc is not defined
at eval (eval at exampledomain.<computed> (mysite.min.js?:1:71178), <anonymous>:1:39)
下面是发生错误的代码行:
eval('exampledomain.build' + type + '(loc)');
我需要使用"eval"根据"类型"调用不同的函数。
如何解决这个问题?
gulp.task('obfus', function() {
return gulp.src('src/main/webapp/js/mysite.min.js')
.pipe(javascriptObfuscator({
compact: true
}))
.pipe(gulp.dest('src/main/webapp/js/dist'));
});
我做了以下修改:
在gulp语句之前增加了一个返回语句。SRC调用以确保任务返回一个流。这很重要,因为它允许Gulp正确处理任务执行过程中可能发生的错误。
增加缩进,使代码更易于阅读和理解。