2015-10-30 18 views
95

ho questo codice:file di Babel viene copiato senza essere trasformato

"use strict"; 

import browserSync from "browser-sync"; 
import httpProxy from "http-proxy"; 

let proxy = httpProxy.createProxyServer({}); 

e ho installato babel-core e babel-cli a livello globale tramite NPM. Il punto è che quando provo a compilare con questo sul mio terminale:

babel proxy.js --out-file proxified.js 

Il file di output viene copiato anziché compilato (voglio dire, è lo stesso del file di origine).

Cosa mi manca qui?

+0

fa il 'cambiamento let' a' var' ma le dichiarazioni 'import' rimangono? – runspired

risposta

151

Babel è una struttura di trasformazione. Pre-6.x, ha abilitato alcune trasformazioni per impostazione predefinita, ma con l'aumento dell'utilizzo delle versioni di Node che supportano in modo nativo molte funzionalità di ES6, è diventato molto più importante che le cose siano configurabili. Per impostazione predefinita, Babel 6.x non esegue alcuna trasformazione. È necessario indicare cosa trasformazioni a correre:

npm install babel-preset-env 

ed eseguire

babel --presets env proxy.js --out-file proxified.js 

o creare un file contenente .babelrc

{ 
    "presets": [ 
     "env" 
    ] 
} 

ed eseguirlo proprio come eri prima.

env in questo caso è un predefinito che dice sostanzialmente di compilare tutto il comportamento ES * standard per ES5. Se si utilizza le versioni Nodo che supportano alcuni ES6, si può prendere in considerazione facendo

{ 
    "presets": [ 
     ["env", { targets: { node: true } }], 
    ] 
} 

a dire il preset da solo le cose di processo che non sono supportati dalla versione Nodo. Puoi anche includere versioni del browser nei tuoi obiettivi se hai bisogno del supporto del browser.

+14

questo è utile. perché non hanno inserito questo nella documentazione? è sicuro installare babel-preset a livello globale? – kidcapital

+0

@kidcapital I documenti includono questo, ma solo come una nota a margine sembra. Ho passato molto tempo a cercare di capire come rendere Babel 6.0 correttamente configurato al momento del rilascio. – nick

+0

L'essenza di questo post è stata aggiunta come info box nella pagina Setup per [PR # 72] (https://github.com/babel/babel.github.io/pull/572/files). Un miglioramento molto minore, ma devi iniziare da qualche parte! Grazie Logan. – nick

3

Ho avuto lo stesso problema con un Diverse cause:

Il codice che stavo tentando di caricare non era nella directory del pacchetto e Babel non esegue il transpill fuori dalla directory del pacchetto.

Ho risolto spostando il codice importato, ma forse avrei potuto usare anche alcune istruzioni di inclusione nella configurazione di Babel.

+0

Potresti approfondire? il mio codice frontend non è "sotto la directory del pacchetto" e funziona perfettamente. Il mio codice server contiene "import" ma babel-cli non risolve quelli ... –

+0

Hmm, non sai cosa elaborare? Babel non stava trasponendo. Prova a guardare tutte le tue fonti di Babel config ... – w00t

+0

il problema che sto cercando di risolvere è che i miei file server sono orgnanizzati in diverse cartelle: ho servers.js, poi/api/... roba ... Quando corro dalla memoria, ogni "importazione" o "richiesta" in quei file viene risolta in modo dinamico. Quando eseguo babel dalla riga di comando, restituisco solo un singolo file, ma non risolvo le importazioni relative, quindi non posso utilizzarlo per eseguire il mio server ... –

3

prima assicurarsi di avere il seguente node modules:

npm i -D webpack babel-core babel-preset-es2015 babel-preset-stage-2 babel-loader

Avanti, aggiungere questo al vostro Webpack config di file (webpack.config.js):

// webpack.config.js 
... 
module : { 
    loaders : [ 
    { 
     test : /\.js$/, 
     loader : 'babel', 
     exclude : /node_modules/, 
     options : { 
     presets : [ 'es2015', 'stage-2' ] // stage-2 if required 
     } 
    } 
    ] 
} 
... 

Riferimenti:

Good Luck!

0

stesso errore, causa diversa:

Transpiling aveva lavorato prima e poi improvvisamente ha smesso di funzionare, con i file semplicemente essere copiati come è.

Risulta che ho aperto il .babelrc a un certo punto e Windows ha deciso di aggiungere .txt al nome file. Ora che .babelrc.txt non è stato riconosciuto da babele. Rimozione del suffisso .txt risolto.

0

risolvere il tuo .babelrc

{ 
    "presets": [ 
    "react", 
    "ES2015" 
    ] 
} 
Problemi correlati