Ho un'applicazione React con componenti scritti in ES6 - traspiled tramite Babel e Webpack.Importazione di file CSS in componenti isomorfi di reazione
In alcuni punti che vorrei includere i file CSS specifici con componenti specifici, come suggerito in react webpack cookbook
Tuttavia, in caso di file di Componente Ho bisogno di una risorsa CSS statica, ad esempio:
import '../assets/css/style.css';
Poi la compilazione fallisce con un errore:
SyntaxError: <PROJECT>/assets/css/style.css: Unexpected character '#' (3:0)
at Parser.pp.raise (<PROJECT>\node_modules\babel-core\lib\acorn\src\location.js:73:13)
at Parser.pp.getTokenFromCode (<PROJECT>\node_modules\babel-core\lib\acorn\src\tokenize.js:423:8)
at Parser.pp.readToken (<PROJECT>\node_modules\babel-core\lib\acorn\src\tokenize.js:106:15)
at Parser.<anonymous> (<PROJECT>\node_modules\babel-core\node_modules\acorn-jsx\inject.js:650:22)
at Parser.readToken (<PROJECT>\node_modules\babel-core\lib\acorn\plugins\flow.js:694:22)
at Parser.pp.nextToken (<PROJECT>\node_modules\babel-core\lib\acorn\src\tokenize.js:98:71)
at Object.parse (<PROJECT>\node_modules\babel-core\lib\acorn\src\index.js:105:5)
at exports.default (<PROJECT>\node_modules\babel-core\lib\babel\helpers\parse.js:47:19)
at File.parse (<PROJECT>\node_modules\babel-core\lib\babel\transformation\file\index.js:529:46)
at File.addCode (<PROJECT>\node_modules\babel-core\lib\babel\transformation\file\index.js:611:24)
sembra che se provo e req uire un file CSS in un file Component, quindi il loader Babel interpreterà come un'altra fonte e tenterà di trasporre il CSS in Javascript.
È previsto? C'è un modo per raggiungere questo obiettivo - consentendo ai file transpiled di fare riferimento esplicito a risorse statiche che non devono essere transpiled?
Ho specificato caricatori per le attività sia js/JSX e CSS come segue:
module: {
loaders: [
{ test: /\.css$/, loader: "style-loader!css-loader" },
{ test: /\.(js|jsx)$/, exclude: /node_modules/, loader: 'babel'}
]
}
Guarda le full webpack config file
DETTAGLI integralmente:
webpack.common.js - Una configurazione di base webpack Io uso, quindi posso condividere le proprietà tra dev e produzione.
Gruntfile.js - Gruntfile utilizzato per lo sviluppo. Come puoi vedere richiede la configurazione del pacchetto web sopra e aggiunge alcune proprietà di sviluppo. Questo potrebbe causare il problema?
Html.jsx - Il mio componente jsx HTML che tenta di importare/richiedere il CSS. Questa è un'app isomorfa (usando Fluxbile), quindi necessita dell'HTML come componente renderizzato. Utilizzando l'istruzione require vista in questo file, in qualsiasi parte della mia applicazione, viene fornito l'errore descritto.
sembra essere qualcosa a che fare con grugnito. Se mi limito a compilare con webpack --config webpack.common.js
allora non ho errori.
Risposta breve: È un errore di runtime del nodo. Cercare di caricare CSS sul server in app isomorfe non è una buona idea.
La tua configurazione è ok. Ho provato a eseguirlo su un'app con inclusione CSS e ha funzionato. Controlla altre cose - forse esegui il webpack con file di configurazione completamente diversi :) o è qualcosa di sbagliato nei pacchetti. Pubblica più informazioni - il tuo package.json, come esegui il webpack, ecc. Forse lo scopriremo. – Viacheslav
Grazie, ho fornito maggiori informazioni sopra. Il problema sembra essere causato da qualche parte in grunt, in quanto la compilazione direttamente tramite webpack va bene. – duncanhall
Potrebbe essere interessante per 'console.log()' il tuo 'webpackConfig' nel gruntfile –