typescript - Kan inte servera statiska filer i NextJs + Storybook
Nextjs-dokumentationen (https://nextjs.org/docs/basic-features/static-file-serving) säger att man ska lägga till bildfilsvägar under katalogen public.
Jag har en komponent som renderar en bildkomponent och filen renderas korrekt i mitt Next.js-projekt men renderas inte i Storybook. Bildfilen ligger för närvarande i public/images/
const renderImage = () => {
const portraitClassName = cx({
[styles.imageContainerPortrait]: true,
});
return (
<img
className={portraitClassName}
data-testid="image"
src="/images/portrait.png"
alt={image.imgAlt}
/>
);
};
Detta är min nuvarande konfigurationsfil för storybook
webpackFinal: async (config) => {
config.module.rules.push({
test: /\.(scss|sass|css)$/,
use: [
{
loader: "sass-loader",
options: {
implementation: require("sass"),
},
},
{
loader: "postcss-loader",
options: {
ident: "postcss",
plugins: [tailwindcss, autoprefixer],
},
}
],
include: path.resolve(__dirname, "../"),
});
return config;
}
Finns det något som saknas som skulle tillåta mig att rendera bilder på samma sätt som Nextjs är uppsatt?
Svar #1
Du behöver tala om för Storybook var dina bilder finns. I nextjs ligger de i public/ så du kan bara lägga till -s ./public i ditt skript för att köra Storybook:
//package.json
{
"scripts": {
"start-storybook": "start-storybook -s ./public"
}
}
Här är dokumentationslänken för referens: https://storybook.js.org/docs/react/configure/images-and-assets#serving-static-files-via-storybook
Svar #2
Det som fungerade för mig var att jag behövde tala om för storybook.js var mina publika resurser fanns, genom att använda staticDirs.
d.v.s.: root > .storybook-katalog > main.ts
const config: StorybookConfig = {
//other stuff ....
docs: {
autodocs: 'tag',
},
staticDirs: ['../public/'], //<--- FIX };
};
export default config;
