导入 CSS 文件时出现“找不到所需模块”的流程

Posted

技术标签:

【中文标题】导入 CSS 文件时出现“找不到所需模块”的流程【英文标题】:Flow “Required module not found” when importing a CSS file 【发布时间】:2016-08-23 02:24:10 【问题描述】:

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

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

我有一个像ComponentName→(index.js, index.css)这样的结构,这样每个组件里面都有所有的依赖。

我尝试了this hack,但它对我不起作用。我可以忽略它吗?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

感谢@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')

【讨论】:

对不起,我对 bundle-loader 不熟悉:/ 我正在为 bundle-loader 做的是:module.name_mapper='bundle.*?\!\(.*\)'-&gt;'\1'。烦人的部分是,对于我们映射的其他别名,我可能必须使用捆绑器添加另一个版本。【参考方案3】:

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

[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'

如果您对 svg、png、jpg 和 gif 使用 url-loader。这将允许 Flow 进行正确的模块替换(url-loader 返回一个字符串(base64 或文件加载器路径)。

例如,如果你这样做

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

Flow 会抛出错误。

【讨论】:

这非常有用,如果能从官方文档中引用它会很棒。 如果import/require中没有提供文件扩展名,有没有办法处理这个问题? @ctrlplusb,这现在在官方文档中here

以上是关于导入 CSS 文件时出现“找不到所需模块”的流程的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSS 引导程序时出现奇怪的错误

导入 index.js 时出现 scss 错误

每次尝试将项目导入eclipse时出现Java问题

导入节点模块时出现流错误“无法解析模块”

尝试使用 webpack 和 babel 加载 css 时出现意外令牌

Android ------ apk签名时出现找不到证书链