使用vite+react搭建项目踩坑记录

本文记录了使用vite+react重构项目时的搭建过程和遇到的问题,包括vite proxy设置、antd引入错误、less配置、jsxDEV报错、全局常量设置、react-router-dom使用、code split和cdn引入第三方库等常见坑的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有段时间没有更新博客,主要的原因是因为面临换工作,而且家里事情也比较多。最近也是安定下来,希望之后可以多更新一些文章。

vite+react项目搭建

到了新的公司之后接到了一个任务,就是重构一个已经开发维护了4年的项目,所以就想到了用一些比较新颖的之前没有用到的技术。于是就想到vite。

关于vite的信息大家可以去官网进行查看,我就不赘述了。至于使用的构建模版其实也在官网可以找到链接,我这边就直接贴上吧。https://github.com/vitejs/vite/tree/main/packages/create-vite 我使用的是react+ts。

我用到的所有技术栈如下:
vite + react + ts + antd + react-reouter + mobx + eslint + husky + commitlint
就构建来说,其实就是查阅各个技术的官方文档,没什么好说的,难度也不大。如果你刚好需要用到这些模版,你可以评论下或者点个赞,我把我的模版上传到github上。

遇到的坑
  • vite proxy设置记得添加changeOrigin 否则会报405的错误
  • 引入antd后报错,找不到~antd/dist/antd.less
    这个是引入路径的识别问题,vite识别不了~符号代表的路径,将~替换为/,在根目录下查找就可以了。
  • 提示less的配置错误,需要在vite配置文件下设置:css:{preprocessorOptions: {less: {javascriptEnabled: true}}}
  • 如果设置的MODE不是production,当你想进行preview的时候会报错:jsxDEV is not a function,这个时候需要对plugin中的react()调用添加参数:jsxRuntime: “classic”。
  • 如果设置全局常量的话:define对象的值不能直接写成字符串,那样的运行时会报错(除非你设置为数字),正确的办法是设置为JSON.stringify();
  • react-router-dom v6版本中的重定向需要这样编写: <Route path="*" element={<Navigate to="/" />} />跳转需要使用useNavigate
  • 进行code split的时候只需要使用React.lazy就可以了
  • 如果在vite下也想实现通过cdn引入第三方库,例如React & react-dom,类似于webpack中的external,可以使用vite-plugin-externals这个插件,根据文档简单配置,然后在index.html文件中引入就可以了。
  • vite的打包工具使用的rollup,当你使用code split功能后,打包出来的文件中都是index.[hash].js这样的文件,难以进行区分,如果想对分割的代码进行自定义命名你需要配置rollup的打包配置,然后自定义打包的规则:
    // vite.config.ts
    export default definConfig({
    	.
    	.
    	.
    	build: {
    		rollupOptions: {
    	      output: {
    	        manualChunks: function (id, {getModuleInfo, getModuleIds}) {
    	          // 此处写你自己的逻辑,id值为你打包文件的绝对路径
    	          // 最终需要返回相应的字符串,可以根据id的路径进行定制,
    	          // getModuleInfo 和 getModuleIds是两个函数,可以获取当前打包文件的更多信息
    	        }
    	      }
    	    },
    	}
        .
        .
        .
    })
    

希望可以帮助到各位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值