2016-04-28 3 views
23

Когда я пытаюсь импортировать CSS через WebPack (импорт (./index.css)) Я получаю эту ошибку:Flow «Обязательный модуль не найден» при импорте CSS файл

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

У меня есть структуру, такую ​​как ComponentName → (index.js, index.css), так что каждый компонент имеет все зависимости внутри.

Я пробовал this взломать, но это не сработало для меня. Могу я как-то проигнорировать это?

ответ

44

Добавьте это в поток конфигурации

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

И добавить создать файл в корневом каталоге CSSModuleStub.js:

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

Если вы хотите чистый путь, вы можете настроить, как это

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

И поэтому переименовать CSSModuleStub.js в flow/stub/css-modules.js.


В то время как мы в этом, если вам нужны какие-то другие корешки (например: для url-loader) вот другой пример

Создать flow/stub/url-loader.js

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

И добавить

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

, если вы используете url-loader для svg, png, jpg и gif. Это позволит Flow сделать правильные замены модуля (URL-загрузчик возвращает строку (base64 или файл-загрузчик путь).

Например, если вы

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

Flow выдаст ошибку.

+1

Это супер полезно, было бы здорово иметь это связано с официальными документами. – ctrlplusb

+0

Есть ли способ решить эту проблему, если в 'import' /' require' не предусмотрено расширение файла? – Victor

+1

@ctrlplusb, теперь это в официальных документах [здесь] (https://flow.org/en/docs/config/options/#toc-module-name-mapper-regex-string) – Victor

0

Благодаря @MoOx, это здорово !! Любые предложения на заглушке для WebPack расслоении загрузчиком?

Я что-то вроде этого думать ...

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

Извините, что я не знаком с пусковым загрузчиком:/ – MoOx

+0

Что я делаю для пускового загрузчика: 'module.name_mapper = 'bundle. *? \! \ (. * \)' -> '\ 1''.Досадная часть заключается в том, что с другими псевдонимами, которые мы сопоставили, мне, возможно, придется добавить еще одну версию с поставщиком. – kalley

Смежные вопросы