您好我正在尝试使用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的相同内容。
我希望有足够的细节。感谢您查看此问题。
答案 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将负责其余的工作。