【发布时间】:2015-05-08 07:32:11
【问题描述】:
我正在使用 JSHint 在 Ionic 框架项目中检查我的 ES6 代码。我需要配置清单才能使用 ES6。似乎当我使用一个小脚本运行 linter 时,它不会读取配置文件 .jshintrc 。我遇到了一堆这样的错误:
'arrow function syntax (=>)' is only available in ES6 (use esnext option). -> $ionicPlatform.ready(() => {
我的 .jshintrc 文件:
{
"asi": false,
"boss": true,
"curly": true,
"eqeqeq": false,
"eqnull": true,
"esnext": true,
"expr": true,
"forin": true,
"immed": true,
"laxbreak": true,
"newcap": false,
"noarg": true,
"node": true,
"nonew": true,
"plusplus": true,
"quotmark": "single",
"strict": false,
"undef": true,
"unused": true
}
我正在使用 Hooks/before_prepare 中包含的此脚本运行 JSHint
#!/usr/bin/env node
var fs = require('fs');
var path = require('path');
var jshint = require('jshint').JSHINT;
var async = require('async');
var foldersToProcess = [
'js6/',
'js6/controllers',
'js6/controllers/schedule',
];
foldersToProcess.forEach(function(folder) {
processFiles("www/" + folder);
});
function processFiles(dir, callback) {
var errorCount = 0;
fs.readdir(dir, function(err, list) {
if (err) {
console.log('processFiles err: ' + err);
return;
}
async.eachSeries(list, function(file, innercallback) {
file = dir + '/' + file;
fs.stat(file, function(err, stat) {
if(!stat.isDirectory()) {
if(path.extname(file) === ".js") {
lintFile(file, function(hasError) {
if(hasError) {
errorCount++;
}
innercallback();
});
} else {
innercallback();
}
} else {
innercallback();
}
});
}, function(error) {
if(errorCount > 0) {
process.exit(1);
}
});
});
}
function lintFile(file, callback) {
console.log("Linting " + file);
fs.readFile(file, function(err, data) {
if(err) {
console.log('Error: ' + err);
return;
}
if(jshint(data.toString())) {
console.log('File ' + file + ' has no errors.');
console.log('-----------------------------------------');
callback(false);
} else {
console.log('Errors in file ' + file);
var out = jshint.data(),
errors = out.errors;
for(var j = 0; j < errors.length; j++) {
console.log(errors[j].line + ':' + errors[j].character + ' -> ' + errors[j].reason + ' -> ' +
errors[j].evidence);
}
console.log('-----------------------------------------');
callback(true);
}
});
}
文件结构是典型的cordova项目结构,我有一个www文件夹,里面有一个js6文件夹 www --> js6 --> controllers --> schedule
【问题讨论】:
-
你的文件结构是什么?是否有更接近相关文件的其他 jshintrc 文件,或者可能有一些本地覆盖?你是如何运行 Jshint 的?
-
您的问题是指
.jshint。你的意思是.jshintrc? -
你有想过这个吗?遇到同样的问题。
-
我从来没想过,老实说,这似乎是一个错误。如果您使用的是 sublime 文本编辑器,请使用包管理器安装它,它工作得很好
标签: javascript cordova ionic-framework jshint