2015-11-05 6 views
14

Ho installato Babel CLI (versione 6) utilizzando npm install --global babel-cli. Quindi installo il preset di risposta usando npm install --global babel-preset-react.Errore: Impossibile trovare il preset "react" quando installato utilizzando npm install --global babel-preset-react ma funziona senza flag globale

Ho poi l'installazione il file .babelrc nella directory di progetto per

{ 
    "presets": ["react"] 
} 

Quando si tenta di costruire un file JSX non riesce con

Error: Couldn't find preset "react" 
    at OptionManager.mergePresets (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:310:17) 
    at OptionManager.mergeOptions (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:270:12) 
    at OptionManager.addConfig (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:206:10) 
    at OptionManager.findConfigs (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:347:16) 
    at OptionManager.init (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:392:12) 
    at File.initOptions (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/index.js:191:75) 
    at new File (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/index.js:122:22) 
    at Pipeline.transform (/usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/pipeline.js:42:16) 
    at transform (/usr/local/lib/node_modules/babel-cli/lib/babel/util.js:53:22) 
    at Object.compile (/usr/local/lib/node_modules/babel-cli/lib/babel/util.js:62:12) 

Se installo il preset senza bandiera --global (cioè installa in node_modules/folder localmente) quindi la build funziona. Come posso impostare Babel per funzionare con un preset globale?

+0

Mi sono imbattuto in questo stesso errore quando cercavo di eseguire babel da Python come processo separato. Ha funzionato correttamente sulla console, quindi ho fatto un piccolo debugging. Ho aggiunto console.log (dirname) alla riga 305 di options-manager.js e ho scoperto che la directory di lavoro corrente doveva essere la directory del progetto. Spero che questo ti aiuti. – CookieOfFortune

+0

Qual è il punto di utilizzare i preset globali? –

+0

@CookieOfFortune: non penso che sia necessario trovarsi nella directory del progetto. Ho installato il modulo localmente in un'altra cartella e ho creato il progetto da lì. funziona fintanto che la directory di lavoro corrente ha il modulo. – KaranK

risposta

14

È possibile specificare il percorso assoluto (o relativa) per il preset che si sta tentando di utilizzare, per esempio: Fix

babel --presets /usr/local/lib/node_modules/babel-preset-react --watch jsx/ --out-dir js/ 
+1

Non funziona per me. Dà lo stesso errore :( – KaranK

+1

Mi dà lo stesso errore :( – socketwiz

+1

Dopo aver creato la VM e reinstallato le librerie con 'sudo apt-get -y install nodejs-legacy npm', quindi sudo npm install --global babel-cli' e poi 'sudo npm install --global babel-preset-react'. La soluzione funziona. ** Nota che è necessario rimuovere il file .babelrc perché funzioni. ** @Petar - puoi modificare la risposta? – KaranK

-1

opzionale

Si può fare in questo modo. Scrivi queste righe nel tuo prompt. Ora l'unica cosa è con globale potrebbe essere necessario utilizzare la correzione suggerita sopra da @Petar che è

babel --presets /usr/local/lib/node_modules/babel-preset-react --watch jsx/ --out-dir js/ 

ma questo si fa tutto ciò che serve.

npm i babel-cli babel-preset-react 

babel --presets react jsx/ --watch --out-dir js/ 

e quindi opzionalmente aggiungere un file .gitignore nella repo github con content = node_modules/ ora gestiscono la vostra trasformazione JSX con lo stesso comando.