2015-10-11 11 views
20

mi piacerebbe essere in grado di utilizzare la funzione di raffreddare classi ES6 di nodejs 4.1.2modo corretto di utilizzare le classi ES6 in un progetto nodejs

ho creato il seguente progetto:

a.js:

class a { 
    constructor(test) { 
    a.test=test; 
    } 
} 

index.js:

require('./a.js'); 
var b = new a(5); 

come si può vedere creo una semplice classe che è construc tor ottiene un parametro. e nel mio include ho bisogno di quella classe e creare un nuovo oggetto basato su quella classe. piuttosto semplice .. ma sto ricevendo il seguente errore:

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode 
at exports.runInThisContext (vm.js:53:16) 
at Module._compile (module.js:413:25) 
at Object.Module._extensions..js (module.js:452:10) 
at Module.load (module.js:355:32) 
at Function.Module._load (module.js:310:12) 
at Module.require (module.js:365:17) 
at require (module.js:384:17) 
at Object.<anonymous> (/Users/ufk/work-projects/bingo/server/bingo-tiny/index.js:1:63) 
at Module._compile (module.js:434:26) 
at Object.Module._extensions..js (module.js:452:10) 

qualche idea perché?

+0

[Modalità rigorosa] (https://devdocs.io/javascript/functions_and_function_scope/strict_mode) –

+0

non è necessario abilitare la modalità rigorosa? non è abilitato di default no? – ufk

+1

È necessario abilitare la modalità rigorosa, non è (ancora) abilitato per impostazione predefinita. –

risposta

26

Sono ancora confuso sul perché 'use strict' è necessario, ma questo è il codice che funziona:

index.js:

"use strict"; 
var a = require('./a.js'); 
var b = new a(5); 

a.js:

"use strict"; 
class a { 
constructor(test) { 
    a.test=test; 
} 
} 
module.exports=a; 
+2

* "Sono ancora confuso sul motivo per cui 'usare strict' è necessario" * Penso che il messaggio di errore sia abbastanza chiaro, non è vero? "* Dichiarazioni con scope (let, const, function, class) non ancora supportate al di fuori della modalità strict" * Ne hai bisogno perché 'class' non è ancora supportato al di fuori della modalità strict. –

+0

grazie per quella nota :) – ufk

36

Oppure si può eseguire in questo modo:

node --use_strict index.js

+1

Molto meglio che inserire "use strict" negli script. Inoltre, l'ordine degli argomenti sembra importare: 'node index.js --use_strict' non * funziona *. – Litty

+7

L'esecuzione dell'intera app in modalità rigorosa significa che non sarà possibile utilizzare moduli che presuppongono che non si sta eseguendo in modalità rigorosa. Potresti trovarti a fare un sacco di refactoring su tutta la linea se lo fai. –

Problemi correlati