2016-05-26 2 views
1

У меня есть несколько функций, которые определены в одном файле js и используются в других. У каждого из них есть комментарии /* exported functionName */, и у меня есть enlint env для браузера/jquery. Основываясь на моем чтении documentation, это все, что мне нужно, но оно, похоже, не работает.eslint/* exported functionName */не работает в браузере env

Что я здесь делаю неправильно?

Вот .eslintrc (она расширяет this one, хотя я получаю такое же поведение без extends):

{ 
    "extends": "../../.eslintrc", 
    "env": { 
    "browser": true, 
    "jquery": true 
    } 
} 

И вот одна из функций (вот second и third):

/** 
* Returns the next hour as Date 
* @return {Date} the next hour 
*/ 
/* exported nextHour */ 
function nextHour() { 
    var oneHour = new Date(); 
    oneHour.setHours(oneHour.getHours() + 1); 
    return oneHour; 
} 

Наконец, это выход, я получаю от eslint:

/Users/nfriedly/visual-recognition-nodejs/public/js/demo.js 
    24:10 error 'nextHour' is defined but never used no-unused-vars 
    37:10 error 'resize' is defined but never used no-unused-vars 

/Users/nfriedly/visual-recognition-nodejs/public/js/use.js 
    26:10 error 'setupUse' is defined but never used no-unused-vars 

Он работает, если я заменил комментарий /* exported...// eslint-disable-next-line no-unused-vars, но я знаю, что это неправильное решение.

Вы можете проверить весь проект от https://github.com/watson-developer-cloud/visual-recognition-nodejs/tree/eslint-exported, а затем просто запустить npm install; npm test, если хотите его увидеть.

ответ

0

Очевидно, что парсер Babel-ESLint, заданный конфигурацией airbnb, может переопределить синтаксический анализ файлов конфигурации, чтобы нарушить документированное каскадное поведение. Установка "parser": null разрешает это.

0

В вашей конфигурации указано, что вы работаете в среде Node. Узел имеет дополнительную область вокруг каждого модуля, поэтому глобальные переменные на самом деле невозможны в узле (по крайней мере, не так, как в браузере). Таким образом, когда правило no-unused-vars видит любую среду с флагом globalReturn (Node, CommonJS, shared-node-browser) или модули, игнорирует /* exported */ комментариев. Вам нужно удалить среду Node и включить среду браузера, если вы хотите использовать глобальные переменные и экспортированные комментарии.

+0

Это не конфигурация, которая применяется. (Я удалил родительский .eslintrc из вопроса, чтобы сделать его более понятным, какой из них действительно применяется к этому js) - тот, который находится в той же папке, что и failing js, устанавливает env в браузер и jQuery. –

+0

, если ваша родительская конфигурация задает среду узла, что означает, что она также относится к текущему файлу (конфигурации сильно объединены, поэтому, если родительская конфигурация задает среду Node, она также применима ко всем дочерним конфигам). Пока среда Node включена, 'exported' не будет работать. Вы можете запустить ESLint с флагом '--print-config', чтобы точно определить, какая конфигурация используется для данного файла. –

+0

Значит, вы говорите, что не существует другой конфигурации для разных js-файлов? –