2016-05-26 38 views
0

我正在使用gulp-jshint并用JavaScript文件接收此消息。该文件是我的Aurelia应用程序中的一个简单的服务类。下面是代码:意外的令牌非法与@inject

import {inject} from 'aurelia-framework'; 
import {MyService} from './app/service/MyService'; 

/* jshint ignore:start */ 
@inject(MyService) 
/* jshint ignore:end */ 
export class App { 

    constructor(MyService) { 
     this.message = MyService.message; 
    } 

} 

这是我的任务,一饮而尽(一饮而尽,jshint是越来越大口使用的负载插件加载):

gulp.task('vet', function() { 
    return gulp.src(config.alljs) 
     .pipe($.if(args.verbose, $.print())) 
     .pipe($.jscs()) 
     .pipe($.jshint()) 
     .pipe($.jscsStylish.combineWithHintResults()) 
     .pipe($.jshint.reporter('jshint-stylish', {verbose: true})) 
     .pipe($.jshint.reporter('fail')); 
}); 

我有"esversion": 6我.jshintrc

这是运行gulp vet(在Powershell的和CMD)的结果

PS C:\_files\programming\MyProj> gulp vet 
[11:42:21] Using gulpfile C:\_files\programming\MyProj\gulpfile.js 
[11:42:21] Starting 'vet'... 

web\app.js 
    line 5 col 1 Unexpected token ILLEGAL (W parseError) 

    ‼ 1 warning 

[11:42:23] 'vet' errored after 1.79 s 
[11:42:23] Error in plugin 'gulp-jshint' 
Message: 
    JSHint failed for: web\app.js 
PS C:\_files\programming\MyProj> 

Aurelia应用程序工作得很好。 JSHint也忽略了VSCode中的@inject,这里没有问题。不过,出于某种原因,gulp-jshint不会放过它。我已经删除并在搜索后重新输入了该行,并找到了非打印字符的许多问题。我试过将jshint ignore切换到// jshint ignore:line语法。依然没有。

有什么我失踪了吗?

回答

0

JSHint不支持修饰器(“@whatever”),所以esversion: 6不会影响这个问题。

JSHint的策略是支持 标准化过程的第2阶段的功能,但对于装饰者来说情况并非如此。

https://github.com/jshint/jshint/issues/2310

不知道为什么你的 “忽略” 指令失败,虽然。也许尝试单行忽略指令? @inject(MyService)// jshint ignore:line

编辑:忽略一条线对我来说也不适用。对不起,这个答案可能不会有帮助。 :-(