JavaScript-Obfuscator:变量未定义



我有一个网站的几个小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正确处理任务执行过程中可能发生的错误。

增加缩进,使代码更易于阅读和理解。

最新更新