Gulp-Uglify - 无法缩小Javascript Angular 1.6.8

时间:2018-02-11 17:28:38

标签: javascript angularjs gulp gulp-uglify

您好我正在尝试使用gulp uglify缩小我的app.js文件,我使用泵来获取错误详情,它在第2行给出了错误

GulpUglifyError: unable to minify JavaScript
Caused by: SyntaxError: Unexpected token: name (app)
File: /Users/Alexander/OneDrive/Alexander/scripts/app.js
Line: 2

我的app.js中的第2行是let app = angular.module("app", ["ngRoute"]);

这是我完整的app.js文件

let app = angular.module("app", ["ngRoute"]);


app.config(function ($routeProvider) {
   $routeProvider

       .when("/",{
           templateUrl : "templates/home.html"
       })

       .when("/resume",{
           templateUrl: "templates/resume.html"
       })

       .when("/contact",{
           templateUrl: "templates/contact.html"
       });

});

app.controller("MainController",["$scope", function ($scope) {

    $scope.name = "Alexander Personal Website";

}]);

这是我的gulpfile.js

var gulp = require('gulp');
var rename = require('gulp-rename');
var uglify = require('gulp-uglify');
var pump = require('pump');
gulp.task('compress', function (cb) {
    pump([
            gulp.src('scripts/*.js'),
            uglify(),
            gulp.dest('app')
        ],
        cb
    );
});

我已经看到Question,其中 uglify不适用于es6 ,但我收到错误的行也是es5的相同内容。

我希望有足够的细节。感谢您查看此问题。

1 个答案:

答案 0 :(得分:2)

  

什么是var和let?

var定义的变量的范围是函数范围或在任何函数global之外声明。

使用let定义的变量的范围是块范围。

在ES6中,介绍let。通常所有浏览器都支持ES6语法,但是已经在早期版本上构建的插件会引发错误。可能主要原因是你的错误。

由于我们的代码可能会通过gulp-uglify模块进行uglify,并且不支持ES6。如果我们的简单代码在浏览器中使用let运行,那么它不会抛出错误。

  

那么问题应该做什么?

要使用ES6功能,必须将我们的ES6代码转换为ES5,以便它可以在我们当前的浏览器上无缝运行。有几种工具可以完成这项任务,对于本教程,我们将使用Babel。

我们还将使用名为Webpack的模块捆绑工具将所有源javascript文件捆绑到一个文件中。通过Webpack支持Babel以插件的形式提供,我们将使用它们来自动化转换任务。这意味着一旦我们配置了这些插件,我们就必须编写ES6代码,Webpack将负责其余的工作。