用gulp uglify压缩后报错s is undefined是怎么回事?

发布于 2022-09-07 23:14:05 字数 835 浏览 19 评论 0

使用原文件是没有任何问题的,使用用gulp压缩后的js就会报这个错误。

clipboard.png

gulp配置如下:

gulp.task("bab", function() {

var path = './cdn/public_html/4.0/js/member_activity.js'
var index = path.lastIndexOf("/")
var ToPath = path.slice(0, index);
return gulp.src(path)
    .pipe(sourcemaps.init())
    .pipe(babel({
        presets: ['es2015']
    }))
    .pipe(uglify(
        {
            compress:{
                drop_console: true,  // 过滤 console
                drop_debugger: true  // 过滤 debugger
            }
        }
    ))
    .pipe(rename({
        extname: '.min.js'
    }))
    .pipe(sourcemaps.write('./cdn/public_html/4.0/js/map'))
    .pipe(gulp.dest('./cdn/public_html/4.0/js'));

})

还想请有经验的大佬指点一下什么情况会导致这种操作。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

时间你老了 2022-09-14 23:14:05

压缩时会修改变量名的,比如你有一个变量名很有描述性,但很长,叫 iKnowWhatYouDoInLastSummer,那么压缩的时候就会尝试把它变成 a,这样就实现了 26 -> 1 的压缩比例。

但是你可能有很多文件互相依赖,只压缩其中一个,就会破坏其它文件对它的依赖,就会产生这种“某变量未定义”的问题。(当然也可能是其它问题,不过从你的描述来看,这种问题的可能性比较大)。

解决方案有两个:

  1. 使用 webpack 或类似的工具合并 JS,把依赖和被依赖一起改名
  2. 使用 mangle:false(也可能是其它配置项,忘记了,很不常用),不改变量名
独守阴晴ぅ圆缺 2022-09-14 23:14:05

member_activity.js 是否依赖了其他文件?
如果依赖了. 需要一同打包.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文