2016-05-26 5 views
1

Ich habe ein paar Funktionen, die in einer js-Datei definiert sind und in anderen verwendet werden. Sie haben jeweils /* exported functionName */ Kommentare und ich habe meine eslint env auf Browser/jquery eingestellt. Basierend auf meiner Lesung der documentation das ist alles was ich brauche, aber es scheint nicht zu funktionieren.Eslint/* exportierter Funktionsname */funktioniert nicht im Browser env

Was mache ich hier falsch?

Hier ist der .eslintrc (es erstreckt sich this one, obwohl ich das gleiche Verhalten ohne extends erhalten):

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

Und hier ist eine der Funktionen (hier ist die second und 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; 
} 

Schließlich ist dies die Ausgabe-I von eslint erhalten:

/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 

Es funktioniert, wenn ich den /* exported... Kommentar mit einem // eslint-disable-next-line no-unused-vars ersetzen, aber ich weiß, dass das nicht die richtige Lösung ist.

Sie können das komplette Projekt von https://github.com/watson-developer-cloud/visual-recognition-nodejs/tree/eslint-exported überprüfen und dann einfach npm install; npm test ausführen, wenn Sie es selbst sehen möchten.

Antwort

0

Offensichtlich kann der Babel-ESLint-Parser, den die airbnb-Konfiguration angibt, das Parsing von Konfigurationsdateien überschreiben, um das dokumentierte Kaskadierungsverhalten aufzuheben. Einstellung "parser": null löst dies.

0

Ihre Konfiguration besagt, dass Sie in einer Knotenumgebung arbeiten. Der Knoten hat einen zusätzlichen Bereich um jedes Modul herum, so dass globale Variablen in Node nicht wirklich möglich sind (zumindest nicht in der gleichen Weise wie im Browser). Wenn die Regel no-unused-vars eine Umgebung mit aktiviertem globalReturn-Flag (Node, CommonJS, shared-node-browser) oder Modulen anzeigt, ignoriert sie /* exported */ Kommentare. Sie müssen die Knotenumgebung entfernen und die Browserumgebung aktivieren, wenn Sie globale Variablen und exportierte Kommentare verwenden möchten.

+0

Das ist nicht die Konfiguration, die gilt. (Ich entfernte den Elternteil .eslintrc von der Frage, um es klarer zu machen, welche man tatsächlich auf diese js angewendet wird) - derselbe in dem selben Ordner wie die fehlgeschlagene js setzt das env auf browser und jQuery. –

+0

Wenn Ihre übergeordnete Konfiguration die Knotenumgebung angibt, bedeutet dies, dass sie auch auf die aktuelle Datei angewendet wird (configs sind tief zusammengefaßt. Wenn also die übergeordnete Konfiguration die Knotenumgebung angibt, gilt sie auch für alle untergeordneten Konfigurationen). Solange die Knotenumgebung aktiviert ist, funktioniert 'exported' nicht. Sie können ESLint mit dem Flag "--print-config" ausführen, um genau zu sehen, welche Konfiguration für eine bestimmte Datei verwendet wird. –

+0

Sie sagen also, es gibt keine Möglichkeit, eine andere Konfiguration für eine andere js-Dateien zu haben? –