0

我有一个 ES6 项目。我想将文件转译成 ES5。我创建了一个 gulp 任务。这是我使用 babel 的任务:

gulp.task('transpile' , function() {
  console.log('Transpile js ');
    return gulp.src(['app/**/*.js'])
    .pipe(babel({
      presets: ['es2015']
    }))
    .pipe(ngAnnotate())
    .pipe(uglify().on('error', function(e){
        console.log(e);
        }))
    .pipe(gulp.dest('target/'));
});

当我运行我的任务时,我有一个错误:

events.js:141
      throw er; // Unhandled 'error' event
      ^
SyntaxError: /Users/me/myapp/target/tmp/src/content.components/login/login.controller.js: Unexpected token (20:16)
  18 |     }
  19 | 
> 20 |     successAuth = (result) => {
     |                 ^
  21 |         this.$rootScope.$broadcast('authenticationSuccess');
  22 |         this.$location.path('/');
  23 |     };
    at Parser.pp.raise (/Users/me/node_modules/babylon/lib/parser/location.js:22:13)

问题发生在我的控制器中:

class LoginController {

    constructor($rootScope, $location, AuthService) {
        this.AuthService = AuthService;
        this.$rootScope = $rootScope;
        this.$location = $location;
    }

    login() {
        this.loading = true;
        this.AuthService.login({
            username: this.username,
            password: this.password,
            rememberMe: this.rememberMe
        }).then(this.successAuth, this.failedAuth);
    }

    successAuth = (result) => {
        this.$rootScope.$broadcast('authenticationSuccess');
        this.$location.path('/');
    };
    failedAuth = (error) => {
        this.error = 'Identifiant ou mot de passe incorrect';
        this.loading = false;
    };
}

LoginController.$inject = ['$rootScope', '$location', 'AuthService']

export default LoginController;

请问如何解决我的错误?

4

1 回答 1

0

类方法的语法是methodName(parameters) { body }.

像这样写你的类:

class LoginController {

    constructor($rootScope, $location, AuthService) {
        this.AuthService = AuthService;
        this.$rootScope = $rootScope;
        this.$location = $location;
    }

    login() {
        this.loading = true;
        this.AuthService.login({
            username: this.username,
            password: this.password,
            rememberMe: this.rememberMe
        }).then(this.successAuth, this.failedAuth);
    }

    successAuth(result) {
        this.$rootScope.$broadcast('authenticationSuccess');
        this.$location.path('/');
    }

    failedAuth(error) {
        this.error = 'Identifiant ou mot de passe incorrect';
        this.loading = false;
    }

}
于 2016-07-15T05:59:12.353 回答