We have a docker compose setup that runs our React app and Storybook in two separate containers.
Recently we changed our builder to Vite, and also updated Storybooks builder to the new Vite builder plugin.
When firing up the Storybook Docker I am getting the following error for all of our components with a Storybook file
al-storybook-dev | 12:55:19 AM [vite] Internal server error: Parse error @:8:132
al-storybook-dev | Plugin: storybook-vite-inject-export-order-plugin
al-storybook-dev | File: /home/node/app/src/v2.2/components/Card/Card.stories.js
al-storybook-dev | at parse (/home/node/app/node_modules/es-module-lexer/dist/lexer.cjs:1:402)
al-storybook-dev | at TransformContext.transform (/home/node/app/node_modules/storybook-builder-vite/inject-export-order-plugin.js:11:35)
al-storybook-dev | at Object.transform (/home/node/app/node_modules/vite/dist/node/chunks/dep-1be34a63.js:50399:53)
al-storybook-dev | at async transformRequest (/home/node/app/node_modules/vite/dist/node/chunks/dep-1be34a63.js:65167:29)
al-storybook-dev | at async viteTransformMiddleware (/home/node/app/node_modules/vite/dist/node/chunks/dep-1be34a63.js:65295:32)
The browser console logs a 404 error for each component screenshot of browser console log
We have Storybook directory setup that separates Storybook into it's own directory in the project root
|-- storybook
|-- .storybook
|-- package.json
I'm not very familiar with Docker or Vite configurations, and am wondering if anyone else has encountered this, or knows what is causing the problem?
module.exports = {
stories: ["../src/**/*.stories.mdx", "../src/**/*.stories.@(js|jsx|ts|tsx)"],
addons: ["@storybook/addon-links", "@storybook/addon-essentials"],
core: {
builder: "storybook-builder-vite",
},
};
{
"name": "assetlogue-app-storybook",
"version": "1.0.0",
"scripts": {
"dev": "vite",
"build": "vite build",
"serve": "vite preview",
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook"
},
"dependencies": {
"react": "^17.0.0",
"react-dom": "^17.0.0"
},
"devDependencies": {
"@babel/core": "^7.15.0",
"@storybook/addon-actions": "^6.3.0",
"@storybook/addon-essentials": "^6.3.0",
"@storybook/addon-links": "^6.3.0",
"@storybook/react": "^6.3.0",
"@vitejs/plugin-react-refresh": "^1.3.1",
"babel-loader": "^8.2.2",
"sass": "^1.37.0",
"storybook-builder-vite": "^0.0.12",
"vite": "^2.4.4"
}
}
version: "3.5"
services:
storybook:
container_name: al-storybook-dev
image: node:14-alpine
working_dir: /home/node/app
volumes:
- storybook_modules:/home/node/app/node_modules:rw
- ../../storybook/package.json:/home/node/app/package.json:rw
- ../../src/:/home/node/app/src:rw
- ../../public/:/home/node/app/public:rw
- ../../storybook/.storybook:/home/node/app/.storybook:rw
command: sh -c "npm install && npm run storybook"
ports:
- "6006:6006"
depends_on:
- app
networks:
- dockernet
volumes:
storybook_modules:
networks:
dockernet:
It turns out there is a small 'gotcha' when moving from Webpack to Vite with file extensions.
If any of your React components don't use the .jsx extension Vite won't find them.