2013-09-25 13 views
6

sto correndo il mio codice attraverso JSHint, e sto colpendo questo errore:interruttore caduta attraverso essere ignorato da JSHint

Expected a break statement before case

Su questo blocco di codice:

switch(true) 
{ 
    // Renames skill1=abc to section_8_1_body=abc 
    case Major === 0 && Minor === 0 && Patch < 433: 
     upgraded = upgraded.replace(/(\s+)skill(\d)=/gm, '$1section_8_$2_body='); 
    /*falls through*/ 

    // Example 
    case Major === 0 && Minor === 0 && Patch < 442: 
     console.log('test'); 
    /*falls through*/ 
} 

Il codice controlla informazioni sulla versione di un file e la aggiornano per essere compatibili con l'ultima versione del software. È quindi intenzionale che gli case s vengano copiati, in modo che un file possa essere aggiornato tramite più versioni.

Tuttavia, ho ancora il messaggio di errore, con/*falls through* aggiunto, anche se it is supposedly valid.

Come posso consentire al mio case di passare correttamente in JSHint?

risposta

16

JSHint sembra aspettarsi che il commento sia sulla linea subito prima dello case.

// Example 
/* falls through */ 
case Major === 0 && Minor === 0 && Patch < 442: 
    console.log('test'); 

Secondo la descrizione in the source code, non riconoscerà il commento altrimenti:

// You can tell JSHint that you don't use break intentionally by 
// adding a comment /* falls through */ on a line just before 
// the next `case`. 
+3

Ah, grazie Jonathan! Ho provato a rimuovere la riga '// Example' ma ho comunque riscontrato lo stesso errore. Il problema era la linea vuota tra '/ * rientra in * /' e 'case'. –

Problemi correlati