2015-12-18 14 views
7

Sto lavorando a un'applicazione React/Webpack/Globalize. Nella modalità di sviluppo le cose sono ok-ish (anche se Globalize insiste sulla compilazione di tutte le impostazioni locali invece di quella che ho selezionato ma questa è un'altra domanda per un altro giorno).
Tuttavia, quando sto impostando production: true nel mio webpack config, sto ottenendo il seguente errore durante l'esecuzione npm run buildWebpack Globalize non riesce build quando impostato sulla modalità di produzione: Nessun formattatore o parser fornito

> webpack --config webpack.prod.config.js 

/opt/app/ui/node_modules/globalize-webpack-plugin/GlobalizeCompilerHelper.js:72 
     throw e; 
      ^
Error: No formatters or parsers has been provided 

ho avuto l'impressione il plugin webpack globalizzare ha lo scopo di gestire la precompilazione. Qualche idea del perché sto vedendo questo errore? Quando imposto le cose production: false le cose vanno bene.

La mia configurazione plugin è:

new GlobalizePlugin({ 
      production: true, 
      developmentLocale: "en", 
      supportedLocales: [ "en"], 
      output: "i18n/[locale].[hash].js" 
     }), 

Quando un server modifiche apportate ai file e webpack dev ricostruisce, sto ricevendo un sacco di questi messaggi indicano recomplication delle zone non sto usando:

[461] ./~/cldr-data/main/es-PY/dateFields.json 15 kB {0} [optional] 
[462] ./~/cldr-data/main/es-SV/dateFields.json 15 kB {0} [optional] 
[463] ./~/cldr-data/main/es-US/dateFields.json 15 kB {0} [optional] 
[464] ./~/cldr-data/main/es-UY/dateFields.json 15 kB {0} [optional] 
[465] ./~/cldr-data/main/es-VE/dateFields.json 15 kB {0} [optional] 
[466] ./~/cldr-data/main/es/dateFields.json 15 kB {0} [optional] 

Nulla di ciò che provo sembra aver superato questo problema.
Grazie

+0

Si prega, si potrebbe fornire un link con un esempio ridotta che posso usare per riprodurre il problema che si trovano ad affrontare (per esempio, utilizzando http://gist.github.com)? –

+0

Scusa, dubito che avrò il tempo dato che ho risolto per ora (vedi la mia risposta sotto). Il modo rapido per replicare è semplicemente aggiungere la configurazione di GlobalizePlugin al file di configurazione di webpack, senza la chiave dei messaggi, e impostare la produzione su true. Quindi 'npm run build' dovrebbe fallire con questo errore. – Harel

+1

Sono felice che tu abbia trovato una soluzione alternativa, ma non è corretta. La chiave 'messages' è facoltativa (diversamente dalla tua risposta di seguito). Se tu o qualcun altro sei interessato a indagare su questo, fammelo sapere. Non riesco a riprodurre l'errore che ottieni, quindi sfortunatamente non sono in grado di suggerirti nulla. Grazie Aggiornamento –

risposta

2

Allo stato attuale, la chiave messages non è "opzionale", ma effettivamente necessaria. Inoltre, da qualche parte è necessario "innescare" (per mancanza di una parola migliore) il formattatore del messaggio chiamando Globalize.formatMessage("somekey") (dove esiste qualche tasto nel file lang). Tutto ciò è necessario quando production è impostato su true.

Inoltre, se si imposta la produzione su true, il percorso output deve corrispondere a un percorso esistente nella struttura di origine. Se ad esempio il tuo codice viene creato in /assets, il percorso di output deve essere assets/i18n/[locale].[hash].js. Altrimenti la directory i18n non verrà creata su build.

Tutto questo deriva da una discussione nel repository github:

https://github.com/rxaviers/globalize-webpack-plugin/issues/10

Problemi correlati