[{"data":1,"prerenderedAt":1770},["ShallowReactive",2],{"docsNavigation":3,"blogNavigation":53,"/blog/reown-wagmi-uniapp-issues":95,"/blog/reown-wagmi-uniapp-issues-surround":1765},[4,38],{"title":5,"path":6,"stem":7,"children":8,"icon":37},"常用网站","/docs/getting-started","1.docs/1.getting-started/1.index",[9,12,17,22,27,32],{"title":10,"path":6,"stem":7,"icon":11},"区块链相关(前端)","i-lucide-box",{"title":13,"path":14,"stem":15,"icon":16},"图片压缩","/docs/getting-started/photo-compression","1.docs/1.getting-started/2.photo-compression","i-lucide-image",{"title":18,"path":19,"stem":20,"icon":21},"组件库","/docs/getting-started/component-library","1.docs/1.getting-started/3.component-library","i-lucide-puzzle",{"title":23,"path":24,"stem":25,"icon":26},"图表库","/docs/getting-started/charts","1.docs/1.getting-started/4.charts","i-lucide-bar-chart-3",{"title":28,"path":29,"stem":30,"icon":31},"CSS","/docs/getting-started/css","1.docs/1.getting-started/5.css","i-lucide-palette",{"title":33,"path":34,"stem":35,"icon":36},"调试测试工具","/docs/getting-started/test","1.docs/1.getting-started/6.test","i-lucide-bug",false,{"title":39,"path":40,"stem":41,"children":42,"page":37},"常用工具","/docs/essentials","1.docs/2.essentials",[43,48],{"title":44,"path":45,"stem":46,"icon":47},"uni-helper","/docs/essentials/uni-helper","1.docs/2.essentials/1.uni-helper","i-lucide-settings",{"title":49,"path":50,"stem":51,"icon":52},"工作流可视化库","/docs/essentials/workflow-libraries","1.docs/2.essentials/2.workflow-libraries","i-lucide-workflow",[54],{"title":55,"path":56,"stem":57,"children":58,"page":37},"Blog","/blog","3.blog",[59,63,67,71,75,79,83,87,91],{"title":60,"path":61,"stem":62},"Vue 3 中 \u003CTransition> 报错：组件根节点无法被动画化的解决方案","/blog/asian-cuisine","3.blog/1.asian-cuisine",{"title":64,"path":65,"stem":66},"使用 openapi-ts-request 自动生成 API 请求代码","/blog/apifox-api-generation","3.blog/2.apifox-api-generation",{"title":68,"path":69,"stem":70},"解决 uni.upload 多文件上传限制：使用 fetch + FormData 实现 H5 环境下的多文件上传","/blog/file-upload-issue-solution","3.blog/3.file-upload-issue-solution",{"title":72,"path":73,"stem":74},"Wangeditor中被div包裹的img标签被过滤问题解决方案","/blog/wangeditor-img-filter-issue","3.blog/4.wangeditor-img-filter-issue",{"title":76,"path":77,"stem":78},"Nuxt项目部署后报错 “Cannot load payload /_payload.json” 的修复","/blog/nuxt-payload-extraction","3.blog/5.nuxt-payload-extraction",{"title":80,"path":81,"stem":82},"Nuxt项目导入nuxt-echarts实现图表渲染","/blog/nuxt-echarts-implementation","3.blog/6.nuxt-echarts-implementation",{"title":84,"path":85,"stem":86},"Reown+Wagmi 在 UniApp+Vite 项目中的问题与解决方案","/blog/reown-wagmi-uniapp-issues","3.blog/7.reown-wagmi-uniapp-issues",{"title":88,"path":89,"stem":90},"数字滚动动画组件 - Vue 动画最佳实践","/blog/number-scroll-animation","3.blog/8.number-scroll-animation",{"title":92,"path":93,"stem":94},"新电脑安装 nvm 卡住？无需修改配置文件，一行命令完美解决！","/blog/nvm-install-solution","3.blog/9.nvm-install-solution",{"id":96,"title":84,"authors":97,"badge":102,"body":104,"date":1757,"description":1758,"extension":1759,"image":1760,"meta":1762,"navigation":747,"path":85,"seo":1763,"stem":86,"__hash__":1764},"posts/3.blog/7.reown-wagmi-uniapp-issues.md",[98],{"name":99,"avatar":100},"qibmz",{"src":101},"/image/avatar.avif",{"label":103},"Solution",{"type":105,"value":106,"toc":1722},"minimark",[107,111,116,120,132,135,149,542,545,549,552,555,558,567,618,622,625,628,631,634,637,644,663,673,690,693,697,700,703,706,709,712,715,900,903,973,977,980,983,986,1000,1166,1170,1173,1176,1179,1182,1185,1188,1403,1407,1410,1413,1416,1419,1460,1463,1565,1568,1575,1681,1684,1687,1712,1718],[108,109,110],"p",{},"在 UniApp+Vite 项目中集成 Reown 和 Wagmi 实现 Web3 钱包连接时，会遇到一系列打包、兼容性和网络问题。本文总结了实际开发中遇到的问题及对应的解决方案。",[112,113,115],"h2",{"id":114},"问题-1wagmi-打包后出现异常文件名","问题 1：Wagmi 打包后出现异常文件名",[117,118,119],"h3",{"id":119},"现象",[108,121,122,123,127,128,131],{},"Wagmi 在本地开发环境运行一切正常，但执行 ",[124,125,126],"code",{},"build"," 打包后，生成的文件中出现以 ",[124,129,130],{},"..node"," 开头的文件，导致引入时报错。",[117,133,134],{"id":134},"解决方案",[108,136,137,138,141,142,144,145,148],{},"在 ",[124,139,140],{},"vite.config.ts"," 的 ",[124,143,126],{}," 配置中添加 ",[124,146,147],{},"rollupOptions","，手动控制代码分包策略：",[150,151,156],"pre",{"className":152,"code":153,"language":154,"meta":155,"style":155},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineConfig({\n  build: {\n    rollupOptions: {\n      output: {\n        manualChunks: (id) => {\n          if (!id || typeof id !== 'string')\n            return 'vendor'\n          \n          // 统一路径分隔符\n          const normalizedId = id.replace(/\\\\/g, '/')\n          if (!normalizedId.includes('node_modules'))\n            return\n          \n          // 处理 @scope/package 和普通包\n          const match = normalizedId.match(/node_modules\\/(@[^/]+\\/[^/]+|[^/]+)/)\n          return match ? `vendor-${match[1].replace('@', '')}` : 'vendor'\n        },\n      },\n    },\n  },\n})\n","ts","",[124,157,158,182,195,205,215,239,277,291,297,304,349,378,384,389,395,450,510,516,522,528,534],{"__ignoreMap":155},[159,160,163,167,170,174,178],"span",{"class":161,"line":162},"line",1,[159,164,166],{"class":165},"s7zQu","export",[159,168,169],{"class":165}," default",[159,171,173],{"class":172},"s2Zo4"," defineConfig",[159,175,177],{"class":176},"sTEyZ","(",[159,179,181],{"class":180},"sMK4o","{\n",[159,183,185,189,192],{"class":161,"line":184},2,[159,186,188],{"class":187},"swJcz","  build",[159,190,191],{"class":180},":",[159,193,194],{"class":180}," {\n",[159,196,198,201,203],{"class":161,"line":197},3,[159,199,200],{"class":187},"    rollupOptions",[159,202,191],{"class":180},[159,204,194],{"class":180},[159,206,208,211,213],{"class":161,"line":207},4,[159,209,210],{"class":187},"      output",[159,212,191],{"class":180},[159,214,194],{"class":180},[159,216,218,221,223,226,230,233,237],{"class":161,"line":217},5,[159,219,220],{"class":172},"        manualChunks",[159,222,191],{"class":180},[159,224,225],{"class":180}," (",[159,227,229],{"class":228},"sHdIc","id",[159,231,232],{"class":180},")",[159,234,236],{"class":235},"spNyl"," =>",[159,238,194],{"class":180},[159,240,242,245,247,250,252,255,258,261,264,267,271,274],{"class":161,"line":241},6,[159,243,244],{"class":165},"          if",[159,246,225],{"class":187},[159,248,249],{"class":180},"!",[159,251,229],{"class":176},[159,253,254],{"class":180}," ||",[159,256,257],{"class":180}," typeof",[159,259,260],{"class":176}," id",[159,262,263],{"class":180}," !==",[159,265,266],{"class":180}," '",[159,268,270],{"class":269},"sfazB","string",[159,272,273],{"class":180},"'",[159,275,276],{"class":187},")\n",[159,278,280,283,285,288],{"class":161,"line":279},7,[159,281,282],{"class":165},"            return",[159,284,266],{"class":180},[159,286,287],{"class":269},"vendor",[159,289,290],{"class":180},"'\n",[159,292,294],{"class":161,"line":293},8,[159,295,296],{"class":187},"          \n",[159,298,300],{"class":161,"line":299},9,[159,301,303],{"class":302},"sHwdD","          // 统一路径分隔符\n",[159,305,307,310,313,316,318,321,324,326,329,332,334,338,341,343,345,347],{"class":161,"line":306},10,[159,308,309],{"class":235},"          const",[159,311,312],{"class":176}," normalizedId",[159,314,315],{"class":180}," =",[159,317,260],{"class":176},[159,319,320],{"class":180},".",[159,322,323],{"class":172},"replace",[159,325,177],{"class":187},[159,327,328],{"class":180},"/",[159,330,331],{"class":176},"\\\\",[159,333,328],{"class":180},[159,335,337],{"class":336},"sbssI","g",[159,339,340],{"class":180},",",[159,342,266],{"class":180},[159,344,328],{"class":269},[159,346,273],{"class":180},[159,348,276],{"class":187},[159,350,352,354,356,358,361,363,366,368,370,373,375],{"class":161,"line":351},11,[159,353,244],{"class":165},[159,355,225],{"class":187},[159,357,249],{"class":180},[159,359,360],{"class":176},"normalizedId",[159,362,320],{"class":180},[159,364,365],{"class":172},"includes",[159,367,177],{"class":187},[159,369,273],{"class":180},[159,371,372],{"class":269},"node_modules",[159,374,273],{"class":180},[159,376,377],{"class":187},"))\n",[159,379,381],{"class":161,"line":380},12,[159,382,383],{"class":165},"            return\n",[159,385,387],{"class":161,"line":386},13,[159,388,296],{"class":187},[159,390,392],{"class":161,"line":391},14,[159,393,394],{"class":302},"          // 处理 @scope/package 和普通包\n",[159,396,398,400,403,405,407,409,412,414,416,418,421,423,426,429,431,434,436,438,440,443,445,448],{"class":161,"line":397},15,[159,399,309],{"class":235},[159,401,402],{"class":176}," match",[159,404,315],{"class":180},[159,406,312],{"class":176},[159,408,320],{"class":180},[159,410,411],{"class":172},"match",[159,413,177],{"class":187},[159,415,328],{"class":180},[159,417,372],{"class":269},[159,419,420],{"class":176},"\\/",[159,422,177],{"class":180},[159,424,425],{"class":269},"@",[159,427,428],{"class":180},"[^",[159,430,328],{"class":269},[159,432,433],{"class":180},"]+",[159,435,420],{"class":176},[159,437,428],{"class":180},[159,439,328],{"class":269},[159,441,442],{"class":180},"]+|[^",[159,444,328],{"class":269},[159,446,447],{"class":180},"]+)/",[159,449,276],{"class":187},[159,451,453,456,458,461,464,467,470,473,476,479,481,483,485,487,489,491,493,496,498,501,504,506,508],{"class":161,"line":452},16,[159,454,455],{"class":165},"          return",[159,457,402],{"class":176},[159,459,460],{"class":180}," ?",[159,462,463],{"class":180}," `",[159,465,466],{"class":269},"vendor-",[159,468,469],{"class":180},"${",[159,471,472],{"class":176},"match[",[159,474,475],{"class":336},"1",[159,477,478],{"class":176},"]",[159,480,320],{"class":180},[159,482,323],{"class":172},[159,484,177],{"class":176},[159,486,273],{"class":180},[159,488,425],{"class":269},[159,490,273],{"class":180},[159,492,340],{"class":180},[159,494,495],{"class":180}," ''",[159,497,232],{"class":176},[159,499,500],{"class":180},"}`",[159,502,503],{"class":180}," :",[159,505,266],{"class":180},[159,507,287],{"class":269},[159,509,290],{"class":180},[159,511,513],{"class":161,"line":512},17,[159,514,515],{"class":180},"        },\n",[159,517,519],{"class":161,"line":518},18,[159,520,521],{"class":180},"      },\n",[159,523,525],{"class":161,"line":524},19,[159,526,527],{"class":180},"    },\n",[159,529,531],{"class":161,"line":530},20,[159,532,533],{"class":180},"  },\n",[159,535,537,540],{"class":161,"line":536},21,[159,538,539],{"class":180},"}",[159,541,276],{"class":176},[108,543,544],{},"此配置可以避免 Vite 生成异常的文件名，确保所有 node_modules 依赖都被正确打包到独立的 vendor chunk 中。",[112,546,548],{"id":547},"问题-2插件要求-es2020-编译目标","问题 2：插件要求 ES2020 编译目标",[117,550,119],{"id":551},"现象-1",[108,553,554],{},"Reown 和 Wagmi 插件在较低的编译目标下无法正常工作。",[117,556,134],{"id":557},"解决方案-1",[108,559,137,560,562,563,566],{},[124,561,140],{}," 中设置编译目标为 ",[124,564,565],{},"es2020","：",[150,568,570],{"className":152,"code":569,"language":154,"meta":155,"style":155},"export default defineConfig({\n  build: {\n    target: 'es2020',\n  },\n})\n",[124,571,572,584,592,608,612],{"__ignoreMap":155},[159,573,574,576,578,580,582],{"class":161,"line":162},[159,575,166],{"class":165},[159,577,169],{"class":165},[159,579,173],{"class":172},[159,581,177],{"class":176},[159,583,181],{"class":180},[159,585,586,588,590],{"class":161,"line":184},[159,587,188],{"class":187},[159,589,191],{"class":180},[159,591,194],{"class":180},[159,593,594,597,599,601,603,605],{"class":161,"line":197},[159,595,596],{"class":187},"    target",[159,598,191],{"class":180},[159,600,266],{"class":180},[159,602,565],{"class":269},[159,604,273],{"class":180},[159,606,607],{"class":180},",\n",[159,609,610],{"class":161,"line":207},[159,611,533],{"class":180},[159,613,614,616],{"class":161,"line":217},[159,615,539],{"class":180},[159,617,276],{"class":176},[112,619,621],{"id":620},"问题-3低版本手机无法连接钱包一直转圈","问题 3：低版本手机无法连接钱包（一直转圈）",[117,623,119],{"id":624},"现象-2",[108,626,627],{},"在部分低版本 Android/iOS 设备上，Reown 连接钱包时一直显示加载状态，无法完成连接。",[117,629,630],{"id":630},"原因",[108,632,633],{},"低版本手机浏览器缺少现代 JavaScript API 的 polyfill 支持。",[117,635,134],{"id":636},"解决方案-2",[108,638,639,640,643],{},"安装 ",[124,641,642],{},"core-js"," 并在项目入口引入完整的 polyfill：",[150,645,649],{"className":646,"code":647,"language":648,"meta":155,"style":155},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add core-js\n","bash",[124,650,651],{"__ignoreMap":155},[159,652,653,657,660],{"class":161,"line":162},[159,654,656],{"class":655},"sBMFI","pnpm",[159,658,659],{"class":269}," add",[159,661,662],{"class":269}," core-js\n",[108,664,137,665,668,669,672],{},[124,666,667],{},"main.ts"," 或 ",[124,670,671],{},"app.ts"," 入口文件顶部添加：",[150,674,676],{"className":152,"code":675,"language":154,"meta":155,"style":155},"import 'core-js/stable'\n",[124,677,678],{"__ignoreMap":155},[159,679,680,683,685,688],{"class":161,"line":162},[159,681,682],{"class":165},"import",[159,684,266],{"class":180},[159,686,687],{"class":269},"core-js/stable",[159,689,290],{"class":180},[108,691,692],{},"这将为低版本浏览器提供完整的 ES6+ API polyfill 支持。",[112,694,696],{"id":695},"问题-4写入合约后无法推送到区块链","问题 4：写入合约后无法推送到区块链",[117,698,119],{"id":699},"现象-3",[108,701,702],{},"部分手机在执行写入合约操作时，虽然获取到了交易 hash，但交易始终无法推送到区块链网络，停留在 pending 状态。",[117,704,630],{"id":705},"原因-1",[108,707,708],{},"Gas 费用估算不准确或未正确设置导致交易无法被矿工打包。",[117,710,134],{"id":711},"解决方案-3",[108,713,714],{},"手动获取和设置 Gas 价格参数：",[150,716,718],{"className":152,"code":717,"language":154,"meta":155,"style":155},"import { estimateFeesPerGas } from '@wagmi/core'\n\nexport async function getGasPrice() {\n  const network = useAppKitNetwork()\n  const fees = await estimateFeesPerGas(wagmiAdapter.wagmiConfig, {\n    chainId: Number(network.value.chainId),\n  })\n  const maxFeePerGas = fees.maxFeePerGas\n  const maxPriorityFeePerGas = fees.maxPriorityFeePerGas\n  return { maxFeePerGas, maxPriorityFeePerGas }\n}\n",[124,719,720,743,749,767,783,811,840,847,863,879,895],{"__ignoreMap":155},[159,721,722,724,727,730,733,736,738,741],{"class":161,"line":162},[159,723,682],{"class":165},[159,725,726],{"class":180}," {",[159,728,729],{"class":176}," estimateFeesPerGas",[159,731,732],{"class":180}," }",[159,734,735],{"class":165}," from",[159,737,266],{"class":180},[159,739,740],{"class":269},"@wagmi/core",[159,742,290],{"class":180},[159,744,745],{"class":161,"line":184},[159,746,748],{"emptyLinePlaceholder":747},true,"\n",[159,750,751,753,756,759,762,765],{"class":161,"line":197},[159,752,166],{"class":165},[159,754,755],{"class":235}," async",[159,757,758],{"class":235}," function",[159,760,761],{"class":172}," getGasPrice",[159,763,764],{"class":180},"()",[159,766,194],{"class":180},[159,768,769,772,775,777,780],{"class":161,"line":207},[159,770,771],{"class":235},"  const",[159,773,774],{"class":176}," network",[159,776,315],{"class":180},[159,778,779],{"class":172}," useAppKitNetwork",[159,781,782],{"class":187},"()\n",[159,784,785,787,790,792,795,797,799,802,804,807,809],{"class":161,"line":217},[159,786,771],{"class":235},[159,788,789],{"class":176}," fees",[159,791,315],{"class":180},[159,793,794],{"class":165}," await",[159,796,729],{"class":172},[159,798,177],{"class":187},[159,800,801],{"class":176},"wagmiAdapter",[159,803,320],{"class":180},[159,805,806],{"class":176},"wagmiConfig",[159,808,340],{"class":180},[159,810,194],{"class":180},[159,812,813,816,818,821,823,826,828,831,833,836,838],{"class":161,"line":241},[159,814,815],{"class":187},"    chainId",[159,817,191],{"class":180},[159,819,820],{"class":172}," Number",[159,822,177],{"class":187},[159,824,825],{"class":176},"network",[159,827,320],{"class":180},[159,829,830],{"class":176},"value",[159,832,320],{"class":180},[159,834,835],{"class":176},"chainId",[159,837,232],{"class":187},[159,839,607],{"class":180},[159,841,842,845],{"class":161,"line":279},[159,843,844],{"class":180},"  }",[159,846,276],{"class":187},[159,848,849,851,854,856,858,860],{"class":161,"line":293},[159,850,771],{"class":235},[159,852,853],{"class":176}," maxFeePerGas",[159,855,315],{"class":180},[159,857,789],{"class":176},[159,859,320],{"class":180},[159,861,862],{"class":176},"maxFeePerGas\n",[159,864,865,867,870,872,874,876],{"class":161,"line":299},[159,866,771],{"class":235},[159,868,869],{"class":176}," maxPriorityFeePerGas",[159,871,315],{"class":180},[159,873,789],{"class":176},[159,875,320],{"class":180},[159,877,878],{"class":176},"maxPriorityFeePerGas\n",[159,880,881,884,886,888,890,892],{"class":161,"line":306},[159,882,883],{"class":165},"  return",[159,885,726],{"class":180},[159,887,853],{"class":176},[159,889,340],{"class":180},[159,891,869],{"class":176},[159,893,894],{"class":180}," }\n",[159,896,897],{"class":161,"line":351},[159,898,899],{"class":180},"}\n",[108,901,902],{},"在写入合约时传入这两个参数：",[150,904,906],{"className":152,"code":905,"language":154,"meta":155,"style":155},"const { maxFeePerGas, maxPriorityFeePerGas } = await getGasPrice()\n\nawait writeContract({\n  // ... 其他参数\n  maxFeePerGas,\n  maxPriorityFeePerGas,\n})\n",[124,907,908,932,936,948,953,960,967],{"__ignoreMap":155},[159,909,910,913,915,917,919,922,924,926,928,930],{"class":161,"line":162},[159,911,912],{"class":235},"const",[159,914,726],{"class":180},[159,916,853],{"class":176},[159,918,340],{"class":180},[159,920,921],{"class":176}," maxPriorityFeePerGas ",[159,923,539],{"class":180},[159,925,315],{"class":180},[159,927,794],{"class":165},[159,929,761],{"class":172},[159,931,782],{"class":176},[159,933,934],{"class":161,"line":184},[159,935,748],{"emptyLinePlaceholder":747},[159,937,938,941,944,946],{"class":161,"line":197},[159,939,940],{"class":165},"await",[159,942,943],{"class":172}," writeContract",[159,945,177],{"class":176},[159,947,181],{"class":180},[159,949,950],{"class":161,"line":207},[159,951,952],{"class":302},"  // ... 其他参数\n",[159,954,955,958],{"class":161,"line":217},[159,956,957],{"class":176},"  maxFeePerGas",[159,959,607],{"class":180},[159,961,962,965],{"class":161,"line":241},[159,963,964],{"class":176},"  maxPriorityFeePerGas",[159,966,607],{"class":180},[159,968,969,971],{"class":161,"line":279},[159,970,539],{"class":180},[159,972,276],{"class":176},[112,974,976],{"id":975},"问题-5reown-默认-rpc-国内无法访问","问题 5：Reown 默认 RPC 国内无法访问",[117,978,119],{"id":979},"现象-4",[108,981,982],{},"Reown 默认使用的 RPC 节点在国内网络环境下无法访问，导致无法连接区块链网络。",[117,984,134],{"id":985},"解决方案-4",[108,987,988,989,991,992,995,996,999],{},"在初始化 ",[124,990,801],{}," 和 ",[124,993,994],{},"createAppKit"," 时添加 ",[124,997,998],{},"customRpcUrls"," 参数，使用国内可访问的 RPC 节点：",[150,1001,1003],{"className":152,"code":1002,"language":154,"meta":155,"style":155},"const wagmiAdapter = new WagmiAdapter({\n  // ... 其他配置\n  customRpcUrls: {\n    1: 'https://your-custom-rpc-url.com', // Ethereum Mainnet\n    56: 'https://bsc-dataseed.binance.org', // BSC\n    // 添加更多链的自定义 RPC\n  },\n})\n\ncreateAppKit({\n  adapters: [wagmiAdapter],\n  // ... 其他配置\n  customRpcUrls: {\n    1: 'https://your-custom-rpc-url.com',\n    56: 'https://bsc-dataseed.binance.org',\n  },\n})\n",[124,1004,1005,1025,1030,1039,1058,1077,1082,1086,1092,1096,1104,1116,1120,1128,1142,1156,1160],{"__ignoreMap":155},[159,1006,1007,1009,1012,1015,1018,1021,1023],{"class":161,"line":162},[159,1008,912],{"class":235},[159,1010,1011],{"class":176}," wagmiAdapter ",[159,1013,1014],{"class":180},"=",[159,1016,1017],{"class":180}," new",[159,1019,1020],{"class":172}," WagmiAdapter",[159,1022,177],{"class":176},[159,1024,181],{"class":180},[159,1026,1027],{"class":161,"line":184},[159,1028,1029],{"class":302},"  // ... 其他配置\n",[159,1031,1032,1035,1037],{"class":161,"line":197},[159,1033,1034],{"class":187},"  customRpcUrls",[159,1036,191],{"class":180},[159,1038,194],{"class":180},[159,1040,1041,1044,1046,1048,1051,1053,1055],{"class":161,"line":207},[159,1042,1043],{"class":336},"    1",[159,1045,191],{"class":180},[159,1047,266],{"class":180},[159,1049,1050],{"class":269},"https://your-custom-rpc-url.com",[159,1052,273],{"class":180},[159,1054,340],{"class":180},[159,1056,1057],{"class":302}," // Ethereum Mainnet\n",[159,1059,1060,1063,1065,1067,1070,1072,1074],{"class":161,"line":217},[159,1061,1062],{"class":336},"    56",[159,1064,191],{"class":180},[159,1066,266],{"class":180},[159,1068,1069],{"class":269},"https://bsc-dataseed.binance.org",[159,1071,273],{"class":180},[159,1073,340],{"class":180},[159,1075,1076],{"class":302}," // BSC\n",[159,1078,1079],{"class":161,"line":241},[159,1080,1081],{"class":302},"    // 添加更多链的自定义 RPC\n",[159,1083,1084],{"class":161,"line":279},[159,1085,533],{"class":180},[159,1087,1088,1090],{"class":161,"line":293},[159,1089,539],{"class":180},[159,1091,276],{"class":176},[159,1093,1094],{"class":161,"line":299},[159,1095,748],{"emptyLinePlaceholder":747},[159,1097,1098,1100,1102],{"class":161,"line":306},[159,1099,994],{"class":172},[159,1101,177],{"class":176},[159,1103,181],{"class":180},[159,1105,1106,1109,1111,1114],{"class":161,"line":351},[159,1107,1108],{"class":187},"  adapters",[159,1110,191],{"class":180},[159,1112,1113],{"class":176}," [wagmiAdapter]",[159,1115,607],{"class":180},[159,1117,1118],{"class":161,"line":380},[159,1119,1029],{"class":302},[159,1121,1122,1124,1126],{"class":161,"line":386},[159,1123,1034],{"class":187},[159,1125,191],{"class":180},[159,1127,194],{"class":180},[159,1129,1130,1132,1134,1136,1138,1140],{"class":161,"line":391},[159,1131,1043],{"class":336},[159,1133,191],{"class":180},[159,1135,266],{"class":180},[159,1137,1050],{"class":269},[159,1139,273],{"class":180},[159,1141,607],{"class":180},[159,1143,1144,1146,1148,1150,1152,1154],{"class":161,"line":397},[159,1145,1062],{"class":336},[159,1147,191],{"class":180},[159,1149,266],{"class":180},[159,1151,1069],{"class":269},[159,1153,273],{"class":180},[159,1155,607],{"class":180},[159,1157,1158],{"class":161,"line":452},[159,1159,533],{"class":180},[159,1161,1162,1164],{"class":161,"line":512},[159,1163,539],{"class":180},[159,1165,276],{"class":176},[112,1167,1169],{"id":1168},"问题-6typescript-报错实例化过深","问题 6：TypeScript 报错\"实例化过深\"",[117,1171,119],{"id":1172},"现象-5",[108,1174,1175],{},"在读写合约方法时，TypeScript 提示 \"Type instantiation is excessively deep and possibly infinite\"。",[117,1177,630],{"id":1178},"原因-2",[108,1180,1181],{},"完整的合约 ABI 文件过大，TypeScript 在进行类型推断时超出递归深度限制。",[117,1183,134],{"id":1184},"解决方案-5",[108,1186,1187],{},"不要存储完整的 ABI，只保留项目实际使用的方法：",[150,1189,1191],{"className":152,"code":1190,"language":154,"meta":155,"style":155},"// ❌ 不要这样做\nimport fullABI from './contract-full-abi.json'\n\n// ✅ 应该这样做\nconst contractABI = [\n  {\n    name: 'transfer',\n    type: 'function',\n    inputs: [\n      { name: 'to', type: 'address' },\n      { name: 'amount', type: 'uint256' },\n    ],\n    outputs: [{ type: 'bool' }],\n  },\n  // 只包含项目需要使用的方法\n] as const\n",[124,1192,1193,1198,1215,1219,1224,1236,1241,1257,1273,1282,1316,1346,1353,1383,1387,1392],{"__ignoreMap":155},[159,1194,1195],{"class":161,"line":162},[159,1196,1197],{"class":302},"// ❌ 不要这样做\n",[159,1199,1200,1202,1205,1208,1210,1213],{"class":161,"line":184},[159,1201,682],{"class":165},[159,1203,1204],{"class":176}," fullABI ",[159,1206,1207],{"class":165},"from",[159,1209,266],{"class":180},[159,1211,1212],{"class":269},"./contract-full-abi.json",[159,1214,290],{"class":180},[159,1216,1217],{"class":161,"line":197},[159,1218,748],{"emptyLinePlaceholder":747},[159,1220,1221],{"class":161,"line":207},[159,1222,1223],{"class":302},"// ✅ 应该这样做\n",[159,1225,1226,1228,1231,1233],{"class":161,"line":217},[159,1227,912],{"class":235},[159,1229,1230],{"class":176}," contractABI ",[159,1232,1014],{"class":180},[159,1234,1235],{"class":176}," [\n",[159,1237,1238],{"class":161,"line":241},[159,1239,1240],{"class":180},"  {\n",[159,1242,1243,1246,1248,1250,1253,1255],{"class":161,"line":279},[159,1244,1245],{"class":187},"    name",[159,1247,191],{"class":180},[159,1249,266],{"class":180},[159,1251,1252],{"class":269},"transfer",[159,1254,273],{"class":180},[159,1256,607],{"class":180},[159,1258,1259,1262,1264,1266,1269,1271],{"class":161,"line":293},[159,1260,1261],{"class":187},"    type",[159,1263,191],{"class":180},[159,1265,266],{"class":180},[159,1267,1268],{"class":269},"function",[159,1270,273],{"class":180},[159,1272,607],{"class":180},[159,1274,1275,1278,1280],{"class":161,"line":299},[159,1276,1277],{"class":187},"    inputs",[159,1279,191],{"class":180},[159,1281,1235],{"class":176},[159,1283,1284,1287,1290,1292,1294,1297,1299,1301,1304,1306,1308,1311,1313],{"class":161,"line":306},[159,1285,1286],{"class":180},"      {",[159,1288,1289],{"class":187}," name",[159,1291,191],{"class":180},[159,1293,266],{"class":180},[159,1295,1296],{"class":269},"to",[159,1298,273],{"class":180},[159,1300,340],{"class":180},[159,1302,1303],{"class":187}," type",[159,1305,191],{"class":180},[159,1307,266],{"class":180},[159,1309,1310],{"class":269},"address",[159,1312,273],{"class":180},[159,1314,1315],{"class":180}," },\n",[159,1317,1318,1320,1322,1324,1326,1329,1331,1333,1335,1337,1339,1342,1344],{"class":161,"line":351},[159,1319,1286],{"class":180},[159,1321,1289],{"class":187},[159,1323,191],{"class":180},[159,1325,266],{"class":180},[159,1327,1328],{"class":269},"amount",[159,1330,273],{"class":180},[159,1332,340],{"class":180},[159,1334,1303],{"class":187},[159,1336,191],{"class":180},[159,1338,266],{"class":180},[159,1340,1341],{"class":269},"uint256",[159,1343,273],{"class":180},[159,1345,1315],{"class":180},[159,1347,1348,1351],{"class":161,"line":380},[159,1349,1350],{"class":176},"    ]",[159,1352,607],{"class":180},[159,1354,1355,1358,1360,1363,1366,1368,1370,1372,1375,1377,1379,1381],{"class":161,"line":386},[159,1356,1357],{"class":187},"    outputs",[159,1359,191],{"class":180},[159,1361,1362],{"class":176}," [",[159,1364,1365],{"class":180},"{",[159,1367,1303],{"class":187},[159,1369,191],{"class":180},[159,1371,266],{"class":180},[159,1373,1374],{"class":269},"bool",[159,1376,273],{"class":180},[159,1378,732],{"class":180},[159,1380,478],{"class":176},[159,1382,607],{"class":180},[159,1384,1385],{"class":161,"line":391},[159,1386,533],{"class":180},[159,1388,1389],{"class":161,"line":397},[159,1390,1391],{"class":302},"  // 只包含项目需要使用的方法\n",[159,1393,1394,1397,1400],{"class":161,"line":452},[159,1395,1396],{"class":176},"] ",[159,1398,1399],{"class":165},"as",[159,1401,1402],{"class":235}," const\n",[112,1404,1406],{"id":1405},"问题-7浮点数计算精度损失","问题 7：浮点数计算精度损失",[117,1408,119],{"id":1409},"现象-6",[108,1411,1412],{},"在处理 Token 金额、价格计算等涉及浮点数的场景时，JavaScript 原生运算会导致精度损失。",[117,1414,134],{"id":1415},"解决方案-6",[108,1417,1418],{},"使用专门的大数库处理计算和判断：",[150,1420,1422],{"className":646,"code":1421,"language":648,"meta":155,"style":155},"pnpm add big.js\n# 或者\npnpm add bignumber.js\n# 或者\npnpm add decimal.js\n",[124,1423,1424,1433,1438,1447,1451],{"__ignoreMap":155},[159,1425,1426,1428,1430],{"class":161,"line":162},[159,1427,656],{"class":655},[159,1429,659],{"class":269},[159,1431,1432],{"class":269}," big.js\n",[159,1434,1435],{"class":161,"line":184},[159,1436,1437],{"class":302},"# 或者\n",[159,1439,1440,1442,1444],{"class":161,"line":197},[159,1441,656],{"class":655},[159,1443,659],{"class":269},[159,1445,1446],{"class":269}," bignumber.js\n",[159,1448,1449],{"class":161,"line":207},[159,1450,1437],{"class":302},[159,1452,1453,1455,1457],{"class":161,"line":217},[159,1454,656],{"class":655},[159,1456,659],{"class":269},[159,1458,1459],{"class":269}," decimal.js\n",[108,1461,1462],{},"示例：",[150,1464,1466],{"className":152,"code":1465,"language":154,"meta":155,"style":155},"import Big from 'big.js'\n\n// 使用 Big.js 进行精确计算\nconst amount1 = new Big('0.1')\nconst amount2 = new Big('0.2')\nconst result = amount1.plus(amount2) // 0.3（精确）\n",[124,1467,1468,1484,1488,1493,1518,1542],{"__ignoreMap":155},[159,1469,1470,1472,1475,1477,1479,1482],{"class":161,"line":162},[159,1471,682],{"class":165},[159,1473,1474],{"class":176}," Big ",[159,1476,1207],{"class":165},[159,1478,266],{"class":180},[159,1480,1481],{"class":269},"big.js",[159,1483,290],{"class":180},[159,1485,1486],{"class":161,"line":184},[159,1487,748],{"emptyLinePlaceholder":747},[159,1489,1490],{"class":161,"line":197},[159,1491,1492],{"class":302},"// 使用 Big.js 进行精确计算\n",[159,1494,1495,1497,1500,1502,1504,1507,1509,1511,1514,1516],{"class":161,"line":207},[159,1496,912],{"class":235},[159,1498,1499],{"class":176}," amount1 ",[159,1501,1014],{"class":180},[159,1503,1017],{"class":180},[159,1505,1506],{"class":172}," Big",[159,1508,177],{"class":176},[159,1510,273],{"class":180},[159,1512,1513],{"class":269},"0.1",[159,1515,273],{"class":180},[159,1517,276],{"class":176},[159,1519,1520,1522,1525,1527,1529,1531,1533,1535,1538,1540],{"class":161,"line":217},[159,1521,912],{"class":235},[159,1523,1524],{"class":176}," amount2 ",[159,1526,1014],{"class":180},[159,1528,1017],{"class":180},[159,1530,1506],{"class":172},[159,1532,177],{"class":176},[159,1534,273],{"class":180},[159,1536,1537],{"class":269},"0.2",[159,1539,273],{"class":180},[159,1541,276],{"class":176},[159,1543,1544,1546,1549,1551,1554,1556,1559,1562],{"class":161,"line":241},[159,1545,912],{"class":235},[159,1547,1548],{"class":176}," result ",[159,1550,1014],{"class":180},[159,1552,1553],{"class":176}," amount1",[159,1555,320],{"class":180},[159,1557,1558],{"class":172},"plus",[159,1560,1561],{"class":176},"(amount2) ",[159,1563,1564],{"class":302},"// 0.3（精确）\n",[117,1566,1567],{"id":1567},"金额转换",[108,1569,1570,1571,1574],{},"使用 ",[124,1572,1573],{},"viem"," 提供的工具函数处理 Token 金额转换：",[150,1576,1578],{"className":152,"code":1577,"language":154,"meta":155,"style":155},"import { formatUnits, parseUnits } from 'viem'\n\n// 将 wei 转换为可读单位\nconst displayAmount = formatUnits(1000000000000000000n, 18) // \"1\"\n\n// 将可读单位转换为 wei\nconst weiAmount = parseUnits('1.5', 18) // 1500000000000000000n\n",[124,1579,1580,1604,1608,1613,1643,1647,1652],{"__ignoreMap":155},[159,1581,1582,1584,1586,1589,1591,1594,1596,1598,1600,1602],{"class":161,"line":162},[159,1583,682],{"class":165},[159,1585,726],{"class":180},[159,1587,1588],{"class":176}," formatUnits",[159,1590,340],{"class":180},[159,1592,1593],{"class":176}," parseUnits",[159,1595,732],{"class":180},[159,1597,735],{"class":165},[159,1599,266],{"class":180},[159,1601,1573],{"class":269},[159,1603,290],{"class":180},[159,1605,1606],{"class":161,"line":184},[159,1607,748],{"emptyLinePlaceholder":747},[159,1609,1610],{"class":161,"line":197},[159,1611,1612],{"class":302},"// 将 wei 转换为可读单位\n",[159,1614,1615,1617,1620,1622,1624,1626,1629,1632,1634,1637,1640],{"class":161,"line":207},[159,1616,912],{"class":235},[159,1618,1619],{"class":176}," displayAmount ",[159,1621,1014],{"class":180},[159,1623,1588],{"class":172},[159,1625,177],{"class":176},[159,1627,1628],{"class":336},"1000000000000000000",[159,1630,1631],{"class":235},"n",[159,1633,340],{"class":180},[159,1635,1636],{"class":336}," 18",[159,1638,1639],{"class":176},") ",[159,1641,1642],{"class":302},"// \"1\"\n",[159,1644,1645],{"class":161,"line":217},[159,1646,748],{"emptyLinePlaceholder":747},[159,1648,1649],{"class":161,"line":241},[159,1650,1651],{"class":302},"// 将可读单位转换为 wei\n",[159,1653,1654,1656,1659,1661,1663,1665,1667,1670,1672,1674,1676,1678],{"class":161,"line":279},[159,1655,912],{"class":235},[159,1657,1658],{"class":176}," weiAmount ",[159,1660,1014],{"class":180},[159,1662,1593],{"class":172},[159,1664,177],{"class":176},[159,1666,273],{"class":180},[159,1668,1669],{"class":269},"1.5",[159,1671,273],{"class":180},[159,1673,340],{"class":180},[159,1675,1636],{"class":336},[159,1677,1639],{"class":176},[159,1679,1680],{"class":302},"// 1500000000000000000n\n",[112,1682,1683],{"id":1683},"总结",[108,1685,1686],{},"集成 Reown 和 Wagmi 到 UniApp+Vite 项目需要注意：",[1688,1689,1690,1694,1697,1700,1703,1706,1709],"ol",{},[1691,1692,1693],"li",{},"配置正确的 Vite 打包策略避免文件名异常",[1691,1695,1696],{},"设置 ES2020 编译目标以支持现代特性",[1691,1698,1699],{},"为低版本设备添加 polyfill 支持",[1691,1701,1702],{},"手动设置 Gas 参数确保交易成功",[1691,1704,1705],{},"使用自定义 RPC 节点解决网络访问问题",[1691,1707,1708],{},"精简 ABI 避免 TypeScript 类型推断问题",[1691,1710,1711],{},"使用专业库处理浮点数和大数运算",[1713,1714,1715],"blockquote",{},[108,1716,1717],{},"（注：文档内容由 Copilot 生成）",[1719,1720,1721],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":155,"searchDepth":184,"depth":184,"links":1723},[1724,1728,1732,1737,1742,1746,1751,1756],{"id":114,"depth":184,"text":115,"children":1725},[1726,1727],{"id":119,"depth":197,"text":119},{"id":134,"depth":197,"text":134},{"id":547,"depth":184,"text":548,"children":1729},[1730,1731],{"id":551,"depth":197,"text":119},{"id":557,"depth":197,"text":134},{"id":620,"depth":184,"text":621,"children":1733},[1734,1735,1736],{"id":624,"depth":197,"text":119},{"id":630,"depth":197,"text":630},{"id":636,"depth":197,"text":134},{"id":695,"depth":184,"text":696,"children":1738},[1739,1740,1741],{"id":699,"depth":197,"text":119},{"id":705,"depth":197,"text":630},{"id":711,"depth":197,"text":134},{"id":975,"depth":184,"text":976,"children":1743},[1744,1745],{"id":979,"depth":197,"text":119},{"id":985,"depth":197,"text":134},{"id":1168,"depth":184,"text":1169,"children":1747},[1748,1749,1750],{"id":1172,"depth":197,"text":119},{"id":1178,"depth":197,"text":630},{"id":1184,"depth":197,"text":134},{"id":1405,"depth":184,"text":1406,"children":1752},[1753,1754,1755],{"id":1409,"depth":197,"text":119},{"id":1415,"depth":197,"text":134},{"id":1567,"depth":197,"text":1567},{"id":1683,"depth":184,"text":1683},"2026-01-22T00:00:00.000Z","在 UniApp+Vite 框架中集成 Reown 和 Wagmi 时遇到的打包、兼容性、RPC 访问等常见问题及完整解决方案。","md",{"src":1761},"https://picsum.photos/id/201/640/360",{},{"title":84,"description":1758},"Y1opWWDEehxJVkftx2KvQ9DJo7okFEFg5wo8SZd9gdA",[1766,1768],{"title":80,"path":81,"stem":82,"description":1767,"children":-1},"详细介绍如何在Nuxt 4项目中集成nuxt-echarts模块并实现ECharts图表的完整步骤和注意事项。",{"title":88,"path":89,"stem":90,"description":1769,"children":-1},"详解如何用 Vue 3 Composition API 实现高性能的数字滚动动画组件，包含内存优化、性能调优和完整代码实现。",1774239528092]