Ike*_*m O 9 reactjs webpack css-loader storybook webpack-5
我将 Storybook 与 webpack 5 一起用于一个简单的项目,尽管为 Storybook 自定义了 webpack 配置,但我在 CSS 模块导入方面遇到了挑战。
(2:7) src/stories/header.css Unknown word
1 |
> 2 | import API from "!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js";
| ^
3 | import domAPI from "!../../node_modules/style-loader/dist/runtime/styleDomAPI.js";
4 | import insertFn from "!../../node_modules/style-loader/dist/runtime/insertBySelector.js";
at processResult (./node_modules/webpack/lib/NormalModule.js:743:19)
at ./node_modules/webpack/lib/NormalModule.js:844:5
at ./node_modules/loader-runner/lib/LoaderRunner.js:399:11
at ./node_modules/loader-runner/lib/LoaderRunner.js:251:18
at context.callback (./node_modules/loader-runner/lib/LoaderRunner.js:124:13)
at Object.loader (./node_modules/@storybook/builder-webpack5/node_modules/css-loader/dist/index.js:155:5)
at runNextTicks (node:internal/process/task_queues:61:5)
at processImmediate (node:internal/timers:437:9)
ModuleBuildError: Module build failed (from ./node_modules/@storybook/builder-webpack5/node_modules/css-loader/dist/cjs.js):
CssSyntaxError
Run Code Online (Sandbox Code Playgroud)
我的 main.js 文件如下所示
module.exports = {
stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
framework: '@storybook/react',
core: {
builder: 'webpack5',
},
webpackFinal: async (config, { configType }) => {
const path = require('path');
config.module.rules.push({
test: /\.css$/,
use: ['style-loader', 'css-loader'],
include: path.resolve(__dirname, '../src'),
});
return config;};
},
};
Run Code Online (Sandbox Code Playgroud)
小智 7
我遇到了完全相同的错误,这是由于意外使用了@nrwl/react/plugins/storybook两次而导致的,这导致了重复的 webpack 加载器规则,所以我猜测framework: '@storybook/react'已经为文件设置了加载器.css,然后您在此处添加自己的加载器
config.module.rules.push({
test: /\.css$/,
use: ['style-loader', 'css-loader'],
include: path.resolve(__dirname, '../src'),
});
Run Code Online (Sandbox Code Playgroud)
它首先使用css-loader,然后style-loader它被传递到框架已经存在的规则,该框架@storybook/react再次使用css-loader,但该加载程序的输入是style-loader规则的输出。您实际上可以在错误中看到这一点
(2:7) src/stories/header.css Unknown word
1 |
> 2 | import API from "!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js";
| ^
3 | import domAPI from "!../../node_modules/style-loader/dist/runtime/styleDomAPI.js";
4 | import insertFn from "!../../node_modules/style-loader/dist/runtime/insertBySelector.js";
Run Code Online (Sandbox Code Playgroud)
因为css-loader需要 CSS 文件但style-loader输出 JS 文件,因此它会抛出错误,Unknown word因为importCSS 单词无效。
因此,要解决您的问题,您可能需要删除 CSS 文件的自定义规则,因为它已经包含在规则中。
| 归档时间: |
|
| 查看次数: |
4166 次 |
| 最近记录: |