2016-05-26 61 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

編輯:忽略一條線對我來說也不適用。對不起,這個答案可能不會有幫助。 :-(