30

当我尝试通过 webpack(import (./index.css)) 导入 CSS 时,出现此错误:

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

我有一个像 ComponentName→(index.js, index.css) 这样的结构,因此每个组件内部都有所有依赖项。

我试过这个黑客,但它对我不起作用。我可以以某种方式忽略它吗?

4

3 回答 3

56

将此添加到您的流程配置中

[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.jsflow/stub/css-modules.js.


当我们这样做时,如果您需要其他一些存根(例如: for 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-loader 返回一个字符串(base64 或文件加载器路径)。

例如,如果你这样做

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

Flow 会抛出错误。

于 2016-05-17T09:58:23.723 回答
1

为了不必为每个项目声明 CSSModule,我发布了一个这样做的 npm 包:

https://www.npmjs.com/package/css-module-flow

https://github.com/ckknight/css-module-flow

于 2016-11-30T20:01:02.003 回答
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')
于 2016-07-26T19:07:58.260 回答