reactjs - Nrwl Storybook React 不渲染图像
问题描述
我有一个用 Nrwl 构建的反应项目。我刚刚注意到我的组件中的所有图像都没有加载。我研究了一下尝试了不同的技术,但无法修复它。例如,我有这些文件
libs/src/lib/components/Nav/Nav.tsx
import React, { FC, MouseEvent } from "react";
import NavStyled from "./Nav.style";
export const Nav: FC<NavProps> = ({ click }: NavProps) => {
return (
<NavStyled>
<div className="nav__container">
<a className="logo" href="/">
<img src="../../assets/icons/logo.svg"/>
</a>
</div>
</NavStyled>
);
};
export default Nav;
libs/src/lib/components/Nav/Nav.stories.tsx
import React from "react";
import Nav from "./Nav";
export default {
component: Nav,
title: "Components/Nav"
};
export const defaultStory = () => <Nav />;
libs/storybook/.storybook/webpack/config.js
const rootWebpackConfig = require("../../../.storybook/webpack.config");
// Export a function. Accept the base config as the only param.
module.exports = async ({ config, mode }) => {
config = await rootWebpackConfig({ config, mode });
config.resolve.extensions.push(".tsx");
config.resolve.extensions.push(".ts");
config.module.rules.push({
test: /\.(ts|tsx)$/,
loader: require.resolve("babel-loader"),
options: {
presets: [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
]
}
});
return config;
};
.storybook/webpack.config.js
module.exports = async ({ config, mode }) => {
config.module.rules.push({
test: /\.stories\.tsx?$/,
loaders: [
{
loader: require.resolve("@storybook/source-loader"),
options: { parser: "typescript" }
}
],
enforce: "pre"
});
return config;
};
我运行故事书使用
nx run storybook:storybok
解决方案
我认为您没有使用任何图像加载器,您可以通过将其添加到 webpack 配置文件来尝试加载。
const svgToMiniDataURI = require('mini-svg-data-uri');
const rootWebpackConfig = require("../../../.storybook/webpack.config");
// Export a function. Accept the base config as the only param.
module.exports = async ({ config, mode }) => {
config = await rootWebpackConfig({ config, mode });
config.resolve.extensions.push(".tsx");
config.resolve.extensions.push(".ts");
config.module.rules.push({
test: /\.(ts|tsx)$/,
loader: require.resolve("babel-loader"),
options: {
presets: [
"@babel/preset-env",
"@babel/preset-react",
"@babel/preset-typescript"
]
},
test: /\.(png|svg|jpg|gif)$/,
loader: 'url-loader',
options: {
limit: true,
generator: content => svgToMiniDataURI(content.toString()),
},
});
return config;
};
推荐阅读
- c++ - 如何遍历 cpp 中函数返回的 char 指针数组
- android - 如何通过 Google Play 商店获取带有应用签名密钥的 apk?
- c# - 我如何获得过去 4 周的周数 C#
- ios - SwiftUI:EditButton 在嵌入 HStack 部分标题时不会触发 onDelete
- matlab - 如何确定在 Octave 中引起警告的位置?
- reactjs - 无法迭代作为道具传递给 React js 子组件的数组
- ios - SwiftUI:如何让滚动视图包含完整列表长度
- python - Python Decimal 不接受 getcontext() 精度修改
- javascript - Node.JS:带有 axios 模块的简单 GET 抛出“错误:超出最大重定向”
- tensorflow - 无法通过弹性推理和张量流服务运行更快的 R-CNN - 如何调试?