2016-02-22 12 views
42

voglio trasformare questo codice:funzione di Arrow "previsto espressione" errore di sintassi

var formatQuoteAmount = function (tx) { 
    return Currency.toSmallestSubunit(tx.usd, 'USD'); 
}; 
var quoteAmounts = res.transactions.map(formatQuoteAmount); 

in una funzione di freccia anonima. Ho scritto questo:

var quoteAmounts = res.transactions.map(tx => Currency.toSmallestSubunit(tx.usd, 'USD')); 

ricevo expression expected errore di sintassi in corrispondenza della freccia. Ho cercato the default syntax here e sembra che la sintassi del mio codice sia corretta. Qualche idea su quale potrebbe essere il problema?

ce l'ho a lavorare con questa sintassi:

var quoteAmounts = res.transactions.map(function (tx) { 
     return Currency.toSmallestSubunit(tx.usd, 'USD') 
    }); 

ma voglio fare un one-liner, con una freccia funzione.

Running on node v5.3.0

+1

cosa tiene/emette di esso 'console.log (res.transactions);' – Jai

+1

In quale ambiente viene eseguito? – nils

+0

@nils, in 'node.js'. Ho aggiornato i tag OP. – Milkncookiez

risposta

95

Ho ricevuto l'errore expression expected riportato da Webstorm durante la modifica di un programma Node.js. In questo caso la soluzione è impostare la versione della lingua su una versione che supporta questa funzionalità.

enter image description here

+12

Modificato in ECMAScript 6, ma sto ancora ricevendo questo errore sulla riga - 'var texts = entity.name.split (" ") .filter (s => s);' (pensato per dividere la stringa, evitando risultati vuoti). Qualche idea su come risolverlo? – Itai

+0

Ricevo questo problema e devo andare e passare l'impostazione della versione della lingua da ES6 a qualcos'altro, quindi tornare indietro.Davvero fastidioso. – greg

+0

Questo ha funzionato anche in PHPStorm per il mio progetto nodejs. Come hai già sottolineato, questa impostazione è un'impostazione JavaScript (che si trova in Javascript, non in nodejs). –

0

la sintassi è corretta e Nodejs supporta le funzioni di direzione, ma non è abilitato di default.

È necessario aggiungere il flag "--harmony" quando si avvia il processo del nodo per attivarlo.

+1

Perché il downvote per favore? – sitifensys

+0

Le funzioni freccia [sono abilitate di default] (https://nodejs.org/en/docs/es6/#which-features-ship-with-node-js-by-default-no-runtime-flag-required) – McMath

+1

https://nodejs.org/en/docs/es6/#which-features-ship-with-node-js-by-default-no-runtime-flag-required dice che le funzioni di freccia non richiedono il flag di runtime. :) – Milkncookiez

11

Quello che segue è quello che ho fatto questo lavoro per me. (1) Cambio l'opzione della lingua JavaScript in ECMAScript 6 come mostrato nella risposta selezionata da @ Joe23

(2) Chiudo il progetto/applicazione Webstorm.

(3) Passare alla cartella del progetto ed eliminare la cartella .idea al suo interno. Credo che questa sia la cartella webstorm generata per mantenere le informazioni sul progetto/applicazione.

(4) Riapro il mio progetto in webstorm e gli errori sono spariti.

+1

Ho provato questo, e ho trovato un ulteriore aspetto. NON regolarlo in File> Impostazioni predefinite, in quanto ciò riguarda solo i nuovi progetti. Invece, DEVI cambiarlo in Webstorm> Preferenze> Lingue e Framework -> Javascript. E non dimenticare di premere Applica! Errori fastidiosi, inutili e privi di scopo come questo (perché WebStorm usa ECMAScript 5.1 come default quando 6.0 esiste e la sua sintassi è così comune?) Sono una ragione per cui torno spesso a Visual Studio e C# - anche se sono sicuro qualsiasi sviluppatore lo dirà a favore del loro IDE e linguaggio più conosciuti. – user3685427