描述bug
在从v6升级到v7后(npx storybook@latest upgrade
),我开始在构建过程中遇到以下错误:
ERROR: The symbol "React" has already been declared
ERROR: The symbol "SvgPencil" has already been declared
ERROR: Multiple exports with the same name "ReactComponent"
指向一个svg文件(export { SvgPencil as ReactComponent };)
我使用的是vite,在.storybook/main.js
中,已声明以下插件:plugins: [svgrPlugin(), react()]
(vite-plugin-svgr, @vitejs/plugin-react)
当运行storybook时,我遇到了
问题。我使用的是vite的最新版本(4.4.9)。不确定是什么原因导致了这些问题,希望得到任何帮助!
重现步骤
- 无响应*
系统信息
- 无响应*
其他上下文信息
- 无响应*
4条答案
按热度按时间nzk0hqpo1#
我成功地使用以下设置使其工作:@LironHazan :
"vite-plugin-svgr": "4.1.0"
.storybook/main.ts
:用法:
希望这有帮助,如果有更好的方法,请告诉我。
fcwjkofz2#
我也遇到了这个问题,唯一能让它正常工作的方法是降级到
vite-plugin-svgr@3.3.0
。在我的项目中,它总是在使用 v4 时失败,原因有以下几点:
import { ReactComponent as SomeAsset } from '../path/to/asset.svg'
?react
esbuild-plugin-svgr
(与tsup
一起捆绑 lib)时,它并不期望解析路径末尾有?react
,所以即使我让 v4 正常工作,它也会破坏其他部分。我尝试将许多不同的选项对象传递给插件 v4 ,但对我的项目似乎没有什么效果,所以我放弃了,选择了 v3 。
gj3fmq9x3#
我也遇到了这个问题,唯一能让它正常工作的方法是降级到
vite-plugin-svgr@3.3.0
。在我的项目中,它总是在使用 v4 时失败,原因有以下几点:
import { ReactComponent as SomeAsset } from '../path/to/asset.svg'
?react
esbuild-plugin-svgr
进行库捆绑(与tsup
一起),这并不期望在解析路径的末尾出现?react
,所以即使我让 v4 正常工作,它也破坏了其他部分。我尝试将许多不同选项对象传递给插件 v4 ,但对我的项目似乎没有什么效果,所以我放弃了,选择了 v3 。
我正在使用这些选项为 svgr 和可以使用命名导出 { ReactComponent as SomeAsset } 导入 SVG 。
"vite-plugin-svgr": "^4.2.0",
"storybook": "^7.6.17",
sq1bmfud4#
我也遇到了这个问题,唯一能让它正常工作的方法是降级到
vite-plugin-svgr@3.3.0
。在我的项目中,它总是在使用 v4 时失败,原因有以下几点:
import { ReactComponent as SomeAsset } from '../path/to/asset.svg'
?react
esbuild-plugin-svgr
(与tsup
一起捆绑 lib)进行捆绑,这不期望在解析路径的末尾出现?react
,所以即使我让 v4 正常工作,它也破坏了其他部分。我尝试了许多不同变体的选项对象传递给插件 v4,但对我的项目似乎没有什么作用,所以我放弃了,选择了 v3。
我正在使用这些选项为 svgr 和可以使用命名导出 { ReactComponent as SomeAsset } 导入 SVG。 "vite-plugin-svgr": "^4.2.0", "storybook": "^7.6.17",
viteFinal: (config) => mergeConfig(config, { plugins: [svgr({ include: '**/*.svg', svgrOptions: { exportType: 'named', ref: true, svgo: false, titleProp: true } })], }),
这样就可以了,谢谢(添加
import svgr from 'vite-plugin-svgr'
并使其正常工作)备注: 我删除了选项,只需在 plugins 数组中使用
svgr()