14

我有一个使用带有 css-modules 的 scss 的文件,如下所示:

import styles from './Login.scss';

webpack 构建工作正常,但我收到一个流程错误:Required Module Not Found

在我的 .flowconfig 我有

[ignore]
.*/node_modules/fbjs/.*
.*/app/main.js
.*/app/dist/.*
.*/release/.*
.*/git/.*

[include]

[libs]

[options]
esproposal.class_static_fields=enable
esproposal.class_instance_fields=enable
esproposal.export_star_as=enable
module.name_mapper.extension='css' -> '<PROJECT_ROOT>/flow/CSSModule.js.flow'
module.name_mapper.extension='styl' -> '<PROJECT_ROOT>/flow/CSSModule.js.flow'
module.name_mapper.extension='png' -> '<PROJECT_ROOT>/flow/WebpackAsset.js.flow'
module.name_mapper.extension='jpg' -> '<PROJECT_ROOT>/flow/WebpackAsset.js.flow'
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue

我也看过https://github.com/facebook/flow/issues/338但它并没有真正的解决方案。

有没有人找到解决这个问题的方法?

4

4 回答 4

23

这个错误的更好的解决方案是使用css-modules-flow-types webpack 插件为你的 CSS 模块生成流类型。

Flow 不知道该scss扩展,因此您需要将以下内容添加到您的.flowconfig,[options]部分中:

; Extensions
module.file_ext=.js
module.file_ext=.jsx
module.file_ext=.json
module.file_ext=.css
module.file_ext=.scss

您还应该添加*.scss.flow到您的.gitignore. 这些文件不应该被签入,因为它们是在 webpack 构建期间自动生成的。

于 2017-08-28T11:28:23.793 回答
8

在 .flowconfig 文件中添加了我希望 flow 识别的所有文件类型

[options]    
module.file_ext=.js
module.file_ext=.json
module.file_ext=.jsx
module.file_ext=.css
module.file_ext=.scss
于 2018-03-20T09:13:55.783 回答
7

可以通过将 .scss 文件分配给空模块来修复此错误。我只是将 npm 安装为空并将其添加到 .flowconfig : module.name_mapper.extension='scss' -> 'empty/object'

于 2017-01-02T18:57:51.563 回答
5

我们可以使用module.name_mapper.extension来替换导入模块的类型Object

module.name_mapper.extension - 指定要匹配的文件扩展名和替换模块名称,由 -> 分隔。

.flowconfig向文件添加选项

// .flowconfig
[options]
module.name_mapper.extension='scss' -> '<PROJECT_ROOT>/flowconfig.mock-module.js'

创建新文件

// flowconfig.mock-module.js
export default Object;
于 2018-11-16T08:45:09.970 回答