Vai al contenuto principale

Domande frequenti

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

Perché l'output di for...of è così verboso e complesso?

Per rispettare le specifiche, il metodo di ritorno dell'iteratore deve essere chiamato in caso di errori. Un'alternativa è utilizzare le assunzioni introdotte in Babel 7.13, come ArrayLikeIsIterable e IterableIsArray, ma si noti che ci sono molte avvertenze da considerare se si utilizzano le assunzioni e che si sta scegliendo volontariamente di non rispettare le specifiche.

Si prega di consultare babel/rfcs#5, google/traceur-compiler#1773 e babel/babel#838 per ulteriori informazioni.

Perché this e arguments vengono rimappati nelle funzioni freccia?

Le funzioni freccia non sono sinonimo di funzioni normali. arguments e this all'interno delle funzioni freccia fanno riferimento alla loro funzione esterna, ad esempio:

JavaScript
const user = {
firstName: "Sebastian",
lastName: "McKenzie",
getFullName: () => {
// whoops! `this` doesn't actually reference `user` here
return this.firstName + " " + this.lastName;
},
// use the method shorthand in objects
getFullName2() {
return this.firstName + " " + this.lastName;
},
};

Si prega di consultare babel/babel#842, babel/babel#814, babel/babel#733 e babel/babel#730 per ulteriori informazioni.

Perché this viene rimappato a undefined?

Babel assume che tutto il codice in input sia un modulo ES2015. I moduli ES2015 sono implicitamente in strict mode, ciò significa che this a livello superiore non è window nel browser né exports in node.

Se non si desidera questo comportamento, è possibile disabilitare strict nel plugin-transform-modules-commonjs.

ATTENZIONE: Se si sceglie di farlo, ci si sta volontariamente discostando dalle specifiche e ciò potrebbe causare futuri problemi di interoperabilità.

Aiuto?! Vorrei solo usare Babel come nella versione 5.x! Ora è tutto troppo complicato!

Ti capiamo! Babel 6 richiede una minima configurazione per iniziare. Riteniamo che sia per il meglio e abbiamo aggiunto dei preset per facilitare questa transizione.

Aggiornamento da Babel 5.x a Babel 6

Il cuore di Babel 6 sono i plugin. I plugin necessari dipendono completamente dalla configurazione specifica, ma è sufficiente aggiungere il seguente file di configurazione per ottenere tutte le stesse trasformazioni presenti in Babel 5:

babel.config.json
{
"presets": ["env", "react", "stage-2"]
}
npm install babel-preset-env babel-preset-react babel-preset-stage-2 --save-dev

Consulta anche il nostro articolo Setting up Babel 6.

Dove sono finiti tutti i documenti?!

Babel 6 removes a lot of the options in favor of plugins so a lot of the docs are no longer applicable.

For every removed option there should be a plugin for it. It's possible we may have missed something, if you think this is the case, please open an issue!

Babel è un progetto open source e apprezziamo qualsiasi contributo. Per favore aiuta con la documentazione se possibile inviando una pull request al repository babel.github.io.

Come si compila Babel dal sorgente?

Vedi le istruzioni di compilazione.

Come si contribuisce a Babel?

Vedi le linee guida per i contributi.

Perché ricevo un Syntax Error/Unexpected Token?

Molto probabilmente non hai incluso un plugin o preset che supporti quella funzionalità. (Potrebbe anche essere un bug nel parser, o potrebbe effettivamente trattarsi di un errore di sintassi).

Perché un determinato pacchetto babel-x non viene aggiornato?

Attualmente utilizziamo il sistema di versioning fisso di Lerna.

Abbiamo una versione globale per tutti i pacchetti. Quando effettuiamo una release, vengono aggiornati solo i pacchetti che hanno effettivamente subito modifiche (eseguiamo un git diff su quella cartella).

Se aggiorniamo solo babel-plugin-transform-exponentiation-operator alla versione 6.x.x, attualmente non pubblichiamo una nuova versione per tutti i pacchetti poiché le altre dipendenze utilizzano ^.

Ad esempio, la release v6.6.0 di Babel non significa che tutti i pacchetti siano ora alla versione 6.6.0.

consiglio

Per assicurarti di utilizzare le ultime versioni dei pacchetti, potrebbe essere necessario rimuovere la cartella node_modules ed eseguire nuovamente npm install.