【问题标题】:.jshintrc file not being read.jshintrc 文件未被读取
【发布时间】: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


【解决方案1】:

改变

if(jshint(data.toString())) {

if(jshint(data.toString(), {esnext:true}})) {

或者您可以先读取 .jshintrc 文件的内容,然后在此处设置 jshint 配置。另见https://github.com/jetma/cordova-hooks/blob/master/before_prepare/02_jshint.js/

【讨论】:

    猜你喜欢
    • 2021-08-03
    • 2015-06-08
    • 2014-03-04
    • 1970-01-01
    • 2022-01-07
    • 2014-03-05
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    相关资源
    最近更新 更多