2016-04-28 17 views
23

Quando provo ad importare CSS tramite webpack (import (./index.css)) sto ottenendo questo errore:“modulo richiesto non trovato” Flow durante l'importazione di un file CSS

3: import './index.css'; 
      ^^^^^^^^^^^^^ ./index.css. Required module not found 

Ho un struttura come ComponentName → (index.js, index.css), in modo che ogni componente abbia tutte le dipendenze all'interno.

Ho provato this mod, ma non ha funzionato per me. Potrei semplicemente ignorarlo in qualche modo?

risposta

44

Aggiungi questo al vostro config flusso

[options] 
module.name_mapper.extension='css' -> '<PROJECT_ROOT>/CSSModuleStub.js' 

E aggiungere creare un file nella root CSSModuleStub.js:

// @flow 
type CSSModule = { [key: string]: string } 
const emptyCSSModule: CSSModule = {} 
export default emptyCSSModule 

Se volete percorso pulito, è possibile regolare come questo

[options] 
module.name_mapper.extension='css' -> '<PROJECT_ROOT>/flow/stub/css-modules.js' 

E quindi rinomina CSSModuleStub.js a flow/stub/css-modules.js.


Mentre noi siamo, se avete bisogno di alcuni altri stub (per esempio: per url-loader) Ecco un altro esempio

Crea flow/stub/url-loader.js

// @flow 
const s: string = "" 
export default s 

E aggiungere

module.name_mapper='.*\.\(svg\|png\|jpg\|gif\)$' -> '<PROJECT_ROOT>/flow/stub/url-loader.js' 

se si utilizza url-loader per svg, png, jpg e gif. Questo permetterà di flusso per effettuare la sostituzione del modulo corretto (url-caricatore restituisce una stringa (base64 o un file-loader percorso).

Per esempio, se si fa

import logoSVG from "./logo.png" 
logoSVG.blah.stuff() // <-- flow will throw here 

flusso genera un errore.

+1

Questo è super utile, sarebbe bello avere questo fa riferimento ai documenti ufficiali. – ctrlplusb

+0

C'è un modo per gestire questo problema se non viene fornita alcuna estensione di file in 'import' /' require'? – Victor

+1

@ctrlplusb, questo è ora nei documenti ufficiali [qui] (https://flow.org/en/docs/config/options/#toc-module-name-mapper-regex-string) – Victor

0

Grazie @MoOx, questo è grande !! Qualche suggerimento su uno stub per webpack fascio loader?

stavo pensando qualcosa di simile ...

module.name_mapper='^bundle?[a-zA-Z0-9$_]+$' -> '<PROJECT_ROOT>/flow/stubs/bundle-loader.js.flow' 

require('bundle?lazy&name=bundleName!path/to/file') 
+0

Scusa, non mi è familiare con bundle-loader:/ – MoOx

+0

Quello che sto facendo per il bundle-loader è: 'module.name_mapper = 'bundle. *? \! \ (. * \)' -> '\ 1''.La parte fastidiosa è che con altri alias che abbiamo mappato, potrei dover aggiungere un'altra versione con il bundler. – kalley