【发布时间】:2021-12-05 10:16:18
【问题描述】:
TL;DR
我正在将一个 css 文件导入一个打字稿模块,但导入解析为一个字符串而不是一个对象。谁能告诉我为什么我没有得到一个对象??
示例
// preview.ts
import test from './src/assets/test.theme.css';
// also tried this:
// import * as test from './src/assets/test.theme.css';
console.log('typeof test: ', typeof test);
console.log(test);
详细说明
实际上,我正在尝试为我的 Angular12 组件库设置一个Storybook。
为了提供各种主题,我想使用@etchteam/storybook-addon-css-variables-theme插件,在其文档中引用了Webpack的内联加载器语法。
import myTheme from '!!style-loader?injectType=lazyStyleTag!css-loader!./assets/my-theme.css';
将此应用到我的代码时,我的浏览器控制台开始抱怨
错误:myTheme.use 不是函数
在我的研究过程中,我认识到导入的样式表不是评估的 javascript 对象,而是作为包含样式加载器生成的源代码的字符串提供的。
我也认识到,此问题并非特定于样式加载器,所有其他加载器也会发生,例如css-loader、raw-loader等
这个问题也与内联加载器语法无关,因为它也显示在一个简约的 webpack 配置中定义的加载器。
环境:
- 角 12
- Webpack 5
复制
我已经设置了GIT repo reproducing the issue。
自述文件解释了重现和问题。
【问题讨论】:
-
你为什么要用 Angular 来做这个?
-
实际上,我正在尝试为我的 Angular 组件库设置一个故事书。我想使用Storybook addon "cssVariablesTheme",它建议使用样式加载器lazyStyleTag 功能在运行时启用和禁用主题。在遵循文档时,我遇到了奇怪的问题。当进一步深入研究这个问题时,我发现它也发生在所描述的简单用例中。顺便说一句:Storybook 根据我的 angular.json 设置动态生成 webpack 配置。
-
可能是一个简单的导入错误尝试
import * as test from './src/assets/test.theme.css' -
你试过这个
import './style.css'吗?
标签: javascript css angular webpack import