Javascript ESlint linting gulpfile.js
您好,我使用Atom和名为lint eslint的插件来lint我的javascript代码,它确实工作得很好,但我的gulpfile.js上有一个非常恼人的lint错误 下面是触发linting错误的代码,我正在为ESlinter使用airbnb.eslintrc配置文件Javascript ESlint linting gulpfile.js,javascript,gulp,ecmascript-6,eslint,arrow-functions,Javascript,Gulp,Ecmascript 6,Eslint,Arrow Functions,您好,我使用Atom和名为lint eslint的插件来lint我的javascript代码,它确实工作得很好,但我的gulpfile.js上有一个非常恼人的lint错误 下面是触发linting错误的代码,我正在为ESlinter使用airbnb.eslintrc配置文件 gulp.task('lint', () => { return gulp.src(['**/*.js', '!node_modules/**', '!src/**']) .pipe(gulpif(args.ver
gulp.task('lint', () => {
return gulp.src(['**/*.js', '!node_modules/**', '!src/**'])
.pipe(gulpif(args.verbose, gprint()))
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
});
注意,我试图使用箭头语法。
我在箭头体周围得到以下错误和意外的块语句。
当我删除return
时,它就会消失
这与gulp src的早期返回流有关。是否有其他方法返回它或如何更正错误我知道我可以忽略该文件,但我想知道是否有其他方法返回
gulp.src()
由于函数只返回一个值,因此可以省略大括号{}
和return
语句,这使代码更轻,更容易阅读
所涉及的规则是“强制在箭头函数中一致使用大括号”
ES6 arrow函数可以返回不带“return”字样的对象,如下所示:
let func = () => ({key: 'value'});
let a = func(); // and a will be an object {key: 'value'}
gulp.task('lint', () => (
gulp.src(['**/*.js', '!node_modules/**', '!src/**'])
.pipe(gulpif(args.verbose, gprint()))
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError())
));
这是ES6标准
eslint airbnb style guide认为,如果箭头函数只返回一个对象,那么“返回”就没有必要了。因此,您的代码可以如下所示:
let func = () => ({key: 'value'});
let a = func(); // and a will be an object {key: 'value'}
gulp.task('lint', () => (
gulp.src(['**/*.js', '!node_modules/**', '!src/**'])
.pipe(gulpif(args.verbose, gprint()))
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError())
));
请参阅更多:关于返回对象文字。注意
代码>上次管道调用后应删除,否则会出现语法错误谢谢解释,我将更详细地阅读规范。不知道您答案的第一部分(关于对象)与此处有何关联。谢谢,我猜如果您没有真正彻底阅读arrow语法规范,就会出现这种情况。“当我删除返回值时,它会消失。”因为()=>{foo}
不同于()=>foo
。第一个返回未定义的,后者返回foo
的值。因此他们可能无法像您使用()=>{return foo;}
那样简单地删除大括号。