uni-app App打包报错:Rollup output.format iife与代码分割冲突解析
做 uni-app 开发最磨人的场景之一就是代码在 H5 端好好的一换到 App 编译打包就翻车。我在一次组件异步化改造里就遇到了这样的报错H5 本地开发和生产构建都正常真机预览也没问题可当我把项目切到 App 端执行打包脚本时控制台直接抛出一行错误[rollup] Invalid value iife for option output.format - UMD and IIFE output formats are not supported for code-splitting builds第一次看到这个报错我的第一反应是 App 端某个原生插件冲突或者页面里有什么 API 在 App 容器里不可用结果翻遍代码也没找到问题。后来才发现这根本不是业务代码的语法或运行时报错而是构建工具在做“输出格式校验”时被卡住了。如果你也正好卡在 uni-app 的 App 编译打包报错上或者正准备给项目做异步组件、分包优化这篇文章可以帮你少走不少弯路。1. 报错现场还原H5 一切正常App 打包却卡在 format 上1.1 报错出现的完整环境和触发方式这个报错最典型的出现场景是 uni-app 3.x 的 Vue 3 项目。项目一开始走的是标准的页面路由跳转所有页面组件在 pages.json 里静态注册编译时所有页面打包进主包App 端构建历次发布都很顺。某次为了优化首屏我把一个低频页面改成了异步加载用 import 函数包裹页面组件又顺手在 pages.json 里加了一个分包目录。改动后的 H5 端构建一切正常App 端却开始报错。代码层面的触发点通常集中在三个地方项目代码里用了import(xxx)动态导入某个页面或组件被defineAsyncComponent包装成异步组件pages.json 里配置了subPackages分包。这些写法的共同点是会让 Rollup 认为当前构建存在“代码分割code-splitting”需求也就是需要把产物拆成多个 chunk按需加载。而 App 端构建又偏偏把输出格式限定为 iife 或 umd两种需求同时出现Rollup 就直接罢工了。1.2 报错发生在构建的哪个阶段这个报错不是发生在代码语法检查阶段也不是运行阶段而是发生在 Rollup 生成最终产物之前的“配置校验”阶段。Rollup 在开始打包前会先检查打包输出配置output里的各项参数其中 format 字段决定产物用什么模块规范。一旦发现 format 是 iife 或 umd同时又存在需要代码分割的多 chunk 构建Rollup 就会用这个错误信息拒绝继续执行。理解这一点很重要因为它决定了排查方向。我见过不少人在看到这个报错后先去检查某个页面里是不是调用了不兼容的 API或者怀疑某个原生插件版本过低折腾半天发现方向完全错了。看到output.format这类字眼第一反应应该是“构建配置和代码组织方式冲突”而不是业务代码有问题。1.3 大多数人会踩的三个误判结合我自己和团队里其他同事的经验遇到这个报错时最常见的三个误判依次是以为是 App 端原生插件或 SDK 的兼容性问题以为是某个第三方组件库在 App 环境不可用以为是云打包服务或本机缓存导致的临时故障。这三个方向可能引发不同的报错但正常情况下不会出现output.format这种构建配置词汇。只要报错信息里带上了 Rollup 的 option 校验提示基本可以确定问题出在构建链路的配置层面和页面里的业务代码没有直接关系。省下乱猜的时间尽早进入定位步骤才是最快的解决路径。2. Rollup 的 output.format 校验到底在检查什么2.1 一句话搞懂 output.format 是什么构建工具的“输出格式”决定了最终产物用哪种方式暴露给外部环境。Rollup 支持多种格式最常用的几种可以看这张表格式全称/含义适合环境amd异步模块定义浏览器 RequireJS 等模块加载器cjsCommonJSNode.js 环境使用 require 导入es / esmES Module现代浏览器原生支持适合 Web 场景iife立即执行函数表达式直接通过 script 标签引入无模块系统umd通用模块定义兼容 AMD、CommonJS、全局变量systemSystemJS 格式SystemJS 加载器H5 端构建时Vite 默认走的是 esES Module格式浏览器原生支持模块加载所以动态 import 和分包可以被优雅地拆成多个文件按需请求。App 端就不同了uni-app 的 App 产物要交给原生容器里的渲染层和逻辑层执行这些容器没有一个“模块加载器”能替你按需拉取 chunk框架只能把最终产物打成一大坨自包含的脚本最常见的格式就是 iife 或 umd。2.2 为什么 iife/umd 不能和代码分割共存这是整个问题的核心。iife 格式的产物是一个自执行的函数体所有变量都挂在同一个作用域里文件之间无法通过 import 语句互相引用。umd 虽然借用了一套兼容层但也要求最终产物在单文件内把 AMD、CommonJS、全局变量三种方案都覆盖到同样不具备跨文件按需加载的能力。而代码分割恰恰需要多个 chunk 文件且这些 chunk 之间必须通过模块语法来建立依赖关系。一个 chunk 要引用另一个 chunk 里导出的变量在 iife 和 umd 的产物结构里根本没有办法表达。Rollup 在配置校验阶段就会识别到这种矛盾于是直接给出UMD and IIFE output formats are not supported for code-splitting builds的提示。2.3 一个比较容易理解的类比可以把 iife/umd 想象成“必须整体搬进门的一件大家具”。这件家具不允许拆成多个部件分别搬运因为房门入口就没有给你二次组装的条件。而代码分割就是“需要把家具拆成若干箱子分批次搬进去”的搬运方案。两个方案放在同一套流程里自然冲突。H5 端的场景是房子门口有完整的组装工具浏览器原生 ESM 加载器拆成多少箱都能按需搬入并自动组装。App 端的场景是门口没有组装工具原生容器不提供模块加载能力只能整体塞进去。当你既要求整体搬入又要求拆箱分运构建系统只能报错停摆。2.4 “Invalid value”这句话的准确解读报错开头写着Invalid value iife for option output.format看起来像是说 iife 这个值本身不合法实际上不是。iife 是合法的 format 值只不过它不能用于当前这种“需要代码分割”的构建场景。Rollup 在配置校验阶段发现 format 与构建目标冲突就用“Invalid value”来概括。所以看到这句话不要急着怀疑框架把格式写错了而是要追问两件事到底是谁把 format 设置成了 iife到底哪段代码触发了代码分割把这两个问题定位清楚问题就解决了一大半。3. 排查链路从报错关键词反查出真正的元凶3.1 先拉完整堆栈不要靠猜遇到这种构建报错第一步不是改代码而是把完整报错堆栈拉出来。如果用的是 HBuilderX 图形界面报错信息可能被折叠或简化建议改用命令行执行构建脚本这样能看到完整的 Rollup 堆栈通常能直接定位到抛错文件。uni-app 项目一般在 package.json 里预设了构建命令类似npm run build:app如果项目是基于 CLI 创建也可以尝试带上调试日志DEBUGvite:* npm run build:app这条命令会输出 Vite 各阶段的大量日志包括最终注入的 config对定位配置来源很有帮助。看到堆栈尾部指向node_modules/rollup或者某个编译器插件路径时就可以进入下一步了。3.2 确认到底是谁把 format 设置成了 iife我建议在 vite.config.js 里临时加一个调试插件在 Rollup 拿到最终配置之前把输出配置打印出来import { defineConfig } from vite import uni from dcloudio/vite-plugin-uni function debugConfig() { return { name: debug-config, configResolved(config) { console.log(ROLLUP OUTPUT:, JSON.stringify(config.build?.rollupOptions?.output, null, 2)) }, } } export default defineConfig({ plugins: [uni(), debugConfig()], })如果打印出来的对象里有format: iife说明是某个环节显式设置了这个值。如果没有那 format 可能是更后面的插件动态注入的。此时可以换一个思路直接在当前项目依赖里搜索硬编码的位置grep -r format.*iife node_modules/dcloudio node_modules/vite这条命令在 macOS 或 Linux 终端下可以快速找出编译器源码里所有把 format 写成 iife 的地方。Windows 环境下可以用文件搜索工具代替。找到位置后就能理解 App 端构建链路为什么一定要用 iife以及它在什么条件下会触发报错。3.3 再定位代码分割的触发点定位完 format 来源下一步就是找出触发代码分割的代码。按频率排序优先级最高的是这三类动态导入搜索代码里的import(关键词异步组件搜索defineAsyncComponent或AsyncComponent分包配置检查 pages.json 里是否有subPackages字段。可以用二分法来做快速验证。先把 pages.json 里的分包字段注释掉同时把最近改动过的异步组件改回静态导入重新跑 App 构建。如果报错消失说明触发源基本就在这些位置。随后再逐一把改动恢复每恢复一项就跑一次构建很快就能定位到具体是哪一处写的动态加载引发的冲突。3.4 一个容易被忽略的情况第三方依赖内部多入口还有一种情况代码里没有任何动态导入分包配置也正常但报错依然出现。这时候要怀疑第三方依赖本身。某些发布到 npm 的包内部可能包含多个入口文件或者内部用了动态 import 做按需加载当 Rollup 对这些依赖做 tree-shaking 和 chunk 合并时同样可能认定存在代码分割需求。可以通过报错堆栈中出现的包名路径来判断。如果堆栈里指向node_modules中某个具体依赖试着在vite.config.js里用resolve.dedupe或optimizeDeps调整对该包的解析方式再验证是否仍然报错。为了帮助回顾我把常见的根因和定位手段整理成一张表根因类型报错特征定位手段项目代码动态 import报错不指向具体业务文件搜索import(和defineAsyncComponentpages.json 分包配置报错在分包相关的构建阶段注释 subPackages 后重新编译编译器插件硬编码 iife报错指向 node_modules 内插件grep 搜索format.*iife第三方依赖内部多入口堆栈指向具体 npm 包查看依赖源码 exports 字段Vite/编译器版本错配配置校验行为异常用 npm ls 确认版本匹配情况4. H5 与 App 两套构建链路的差异才是这类报错的土壤4.1 H5 端为什么风平浪静H5 端本质是标准 Web 构建Vite 默认的 output.format 是 es产物是浏览器原生支持的 ES Module。现代浏览器可以直接加载script typemodule也支持按需拉取拆分后的 chunk。所以动态 import、分包在 H5 端都是“合法操作”Rollup 不会遇到格式冲突。另外Vite 开发模式下用的是 esbuild 做模块转换连 Rollup 都没跑起来自然看不见这个报错。生产构建时虽然走 Rollup但由于 format 是 es代码分割完全被允许。这就是为什么同样的代码H5 端从开发到上线都一路绿灯App 端却会在打包环节突然卡住。4.2 App 端为什么要用 iife/umduni-app 的 App 端产物要交给原生容器中的渲染层和逻辑层执行。这些容器不是完整浏览器没有模块加载器能替你按需 import chunk。框架层面把输出格式固定为 iife 或 umd是为了让最终脚本以“塞进去就能跑”的形态存在。这个设计本身没有问题问题在于当你引入异步组件或分包配置后代码组织方式产生了拆分 chunk 的需求但输出格式又不允许拆分。两个诉求撞在一起Rollup 只能选择报错。不要觉得这是 uni-app 独有的问题几乎所有面向小程序/App 容器做编译的框架都会面临类似的取舍。在 Web 端天经地义的“按需加载”到了这类容器环境里就变成了一种需要额外处理的模式。4.3 分包和异步组件在 App 端的真实处境App 端本身也有分包概念但分包机制和 Rollup 的代码分割是两套东西。pages.json 里的 subPackages 是业务层面的页面分包运行时由框架统一调度Rollup 的代码分割是构建产物层面的 chunk 拆分。编译器在处理 subPackages 时为了保护 App 端容器限制可能会把某些子包的内容做合并但如果某个子包内存在动态导入或者异步组件编译器同一条链路上就可能出现“既要 iife又要拆 chunk”的矛盾。不同编译器版本对这个问题的处理还不完全一致所以会出现同一种分包写法有的人能编过有的人就报错的情况。这也是为什么遇到这类报错首先要看版本配套。4.4 版本错配是“昨天还能编今天就报错”的根源uni-app 3.x 对 Vite 版本有明确的协同关系。npm 安装依赖时如果不加约束很容易把一个关键包升级到编译器尚未适配的版本。Rollup 的格式校验逻辑在不同版本里有差别原本能通过的组合在新版本下可能直接被拒绝。检查版本最直接的方式npm ls vite rollup dcloudio/vite-plugin-uni执行这条命令可以列出项目当前实际安装的版本。如果某个包出现多个版本或者版本号和项目初始安装时不一致那就很可能是版本错配引发了编译链路的兼容问题。这类问题在 H5 端可能没有明显表现因为 Web 的构建宽容度更高而 App 端因为格式限制严格版本差异直接体现在报错上。5. 从绕过到根治三层解决方案按需选用5.1 方案一快速止血把动态 import 改回静态导入如果你当前最重要的是赶紧出一版安装包可以先做止血处理。方法很直接把触发代码分割的异步组件或动态 import 改为静态导入。// 修改前动态导入触发代码分割 const OrderPage () import(/pages/order/detail.vue) // 修改后静态导入简单粗暴 import OrderPage from /pages/order/detail.vue副作用很清楚页面会直接打入主包主包体积变大。低频页面也会在启动时就被加载首屏时间可能变差。所以这个方案只适合临时验证不建议长期保留。如果那个页面组件体积不大静态导入的成本可能还可以接受但要是项目里大量页面都这样处理App 首屏加载会有明显劣化。记住它的定位它是止血手段不是治疗方案。5.2 方案二版本对齐解决编译器与 Vite 不匹配如果报错是在某次依赖升级之后开始出现的优先考虑版本对齐。这是接近根因的解法。操作步骤先看一下 git 历史或 package-lock.json找到之前能正常打包时的版本组合执行npm ls查看当前实际安装版本查一下当前 uni-app 编译器版本对应的 Vite 版本区间把 vite 和 rollup 锁定到匹配版本备份 package.json 和锁文件后执行精准安装比如npm install -D vitex.y.z删除 node_modules 重新安装彻底清掉旧版本残留重新构建 App 端验证。这里有一个经验之谈升级依赖这种事真的不适合在发布前夕顺手做。升级前最好先在小分支上验证两端构建确认没有兼容性问题再合入主干。5.3 方案三显式调整 rollupOptions保留异步加载能力如果你确认自己的代码结构需要保留异步组件和分包可以尝试在 vite.config.js 中显式控制 output 行为import { defineConfig } from vite import uni from dcloudio/vite-plugin-uni export default defineConfig({ plugins: [uni()], build: { rollupOptions: { output: { // 把动态导入合并进主包不产生拆分 chunk inlineDynamicImports: true, }, }, }, })inlineDynamicImports: true的原理很简单告诉 Rollup 把所有动态导入的内容合并回同一个 bundle不生成拆分 chunk。这样一来 code-splitting 的前提条件不存在iife/umd 格式的限制自然就被绕开了。这个方案的适用面是动态 import 不多、懒加载收益有限的项目可以长期使用。如果项目里动态 import 很多或者分包目录体积很大这会让主包显著膨胀反而得不偿失。另一个思路是通过manualChunks把容易冲突的依赖合并build: { rollupOptions: { output: { manualChunks(id) { if (id.includes(node_modules)) return vendor }, }, }, }把公共依赖合并成一个 chunk可以减少多 chunk 之间的互相引用从而降低冲突概率。但这种方式在 uni-app 项目里需要反复试验不一定一次就能调到理想状态要有耐心。5.4 方案四依赖排除和 external谨慎使用如果报错明确指向某个第三方依赖可以尝试把它加入 optimizeDeps 的 exclude 或 external。但这个方案在 uni-app 项目里优先级最低因为 App 容器的运行环境可能没有对应的全局变量强行 external 后运行时很可能直接报xx is not defined。我把几个方案的适用场景和代价整理成一张表方便对照决策方案适用场景主要代价建议优先级静态导入临时出包、验证问题主包变大、首屏变慢临时使用版本对齐依赖升级后开始报错需要重新安装依赖推荐优先inlineDynamicImports异步代码少、体积可控失去部分懒加载收益按实际情况选择manualChunks公共依赖冲突配置调试成本高视情况使用external/exclude特定依赖引发冲突运行时风险较高最后尝试6. 类似 format 报错的通用排查思路以及我的一些建议6.1 你可能遇到的其他 format 报错变体除了Invalid value iife for option output.format之外Rollup 的 format 校验还可能出现其他形态的提示比如Invalid value es for option output.format或者直接提示某个格式不支持 code-splitting。它们的共同点是一样的format 设置和代码分割存在矛盾。排查思路也一脉相承——先看谁设置的 format再看谁触发了代码分割。在 uni-app 生态里最容易触发这个矛盾的就是 App 端默认的 iife/umd 格式配合动态加载。遇到 format 报错优先怀疑“异步加载”和“分包”这两个方向基本不会跑偏。6.2 一个可以复用的排查公式把这次排查过程抽象成一个固定流程以后遇到同类问题可以直接套用判断报错阶段是否是 Rollup 构建时的配置校验找到 format 设置者自定义配置、编译器插件源码找到 code-splitting 触发点动态 import、defineAsyncComponent、subPackages、第三方依赖多入口检查版本匹配度用 npm ls 看关键依赖的版本关系选择处理方案静态导入临时/ 版本对齐推荐/ output 调整 / external最后。每次排查都记录一下报错关键词和最终原因积累几次之后再遇到类似报错基本可以直接照着清单走。6.3 保持项目健康的两个习惯第一个习惯是别把锁文件丢在一边。package-lock.json 或 yarn.lock 要提交进仓库团队成员的依赖版本保持一致不在发布前一天随手升级 vite 相关包。第二个习惯是在提交前同时跑一遍 H5 和 App 的构建脚本可以在 package.json 里预制一个检查命令{ scripts: { check:build: npm run build:h5 npm run build:app } }很多配置类错误等到发版时才发现往往会直接影响交付节奏。提前把两端构建链路的差异暴露在开发阶段format 这类问题就能被拦截在提交前。6.4 最后一点个人体会拿我自己来说那次报错最终锁定在 pages.json 新加的一个分包目录叠加异步组件双重触发。我先把分包保留异步组件改成静态导入App 端立刻通过。后来又把 Vite 版本对齐到编译器要求的版本再改回异步组件这次就能正常打出带异步 chunk 的包了。从那以后我养成了一个习惯每次调整异步组件或分包都会优先在 App 端编译脚本上验证而不是只在浏览器里看效果。这两套构建链路的脾气确实不一样很多坑早踩晚踩都是要踩的提前在本地踩一遍总比发版时才发现要好。

相关新闻

Flutter与OpenHarmony:Scaffold和AppBar组件开发指南

Flutter与OpenHarmony:Scaffold和AppBar组件开发指南

1. 项目概述Flutter for OpenHarmony 是一个令人兴奋的技术组合,它将 Flutter 的跨平台开发能力与 OpenHarmony 的分布式特性完美结合。作为一名长期从事移动端开发的工程师,我发现这个组合正在改变我们构建应用的方式。今天要讨论的 Scaffold 和 AppBar…

2026/10/15 8:48:57 阅读更多 →
Math Studio中文教程:1MB计算App的函数翻译与实战指南

Math Studio中文教程:1MB计算App的函数翻译与实战指南

简介:Math Studio是一款体积仅1M但功能异常强大的手机数学计算工具,这份中文教程正是为其编写的内置函数全翻译手册。资源将软件中上百种函数逐一给出中文释义,涵盖了代数、基础运算、微积分、计算机代数系统(CAS)等类…

2026/10/15 8:48:57 阅读更多 →
怎么高效处理电商大促海量订单?2026年专业的外呼机器人软件推荐

怎么高效处理电商大促海量订单?2026年专业的外呼机器人软件推荐

电商大促期间订单通知、预约确认、售后回访等外呼任务集中爆发,人工坐席难以承接。本文围绕外呼机器人在大促场景中的实际价值,梳理任务管理、语音交互、结果回写与合规触达等关键能力,并以合力亿捷为例说明专业软件如何支撑海量订单的高效处…

2026/10/15 8:48:57 阅读更多 →

最新新闻

TensorFlow模型Docker化部署:从环境契约到生产就绪全链路

TensorFlow模型Docker化部署:从环境契约到生产就绪全链路

1. 为什么非得把TensorFlow模型塞进Docker里?——从“能跑”到“能用”的真实断层我第一次接手一个图像分类项目时,本地环境是Python 3.8 TensorFlow 2.11 CUDA 11.7,模型训练完导出为SavedModel格式,用tf.keras.models.load_mo…

2026/10/15 14:47:22 阅读更多 →
插件机制全解析:从加载原理到报错排查与架构设计

插件机制全解析:从加载原理到报错排查与架构设计

最近在折腾项目里的插件体系时,顺手翻了翻相关搜索的热词,发现大家提到 plugins(插件)时的困惑高度集中在这几类:一是“这插件到底是干什么的”,比如 IAR plugins 被反复追问;二是插件在加载阶段…

2026/10/15 14:47:22 阅读更多 →
一条SELECT * FROM user背后的数据库执行全流程解析

一条SELECT * FROM user背后的数据库执行全流程解析

1. 项目概述:一条SQL语句背后,藏着整个数据库的呼吸节奏“Select * from user”这行代码,看起来像一句再普通不过的问候——它不带条件、不加索引、不设限制,甚至有点懒散。但就是这短短十个字符,在某次线上告警里&…

2026/10/15 14:47:22 阅读更多 →
GXUST AI通识课:用TaoToken统一Key打通课程实验API调用

GXUST AI通识课:用TaoToken统一Key打通课程实验API调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 14:47:22 阅读更多 →
DeepSeek-R1推理模型提示词实战:从模型选型到五类需求模板

DeepSeek-R1推理模型提示词实战:从模型选型到五类需求模板

简介:大模型按思考方式可分为概率预测型与链式推理型两类。前者擅长快速生成与多轮对话,后者如DeepSeek-R1则通过逐步拆解问题、链式推导处理数学证明、代码生成等复杂逻辑任务。针对不同模型,提示词设计策略截然相反:推理模型自带…

2026/10/15 14:47:22 阅读更多 →
Django人事管理系统开发实战与优化技巧

Django人事管理系统开发实战与优化技巧

1. 项目背景与核心价值人事管理系统是现代企业运营中不可或缺的基础设施。传统Excel表格管理员工信息的方式已经无法满足企业快速发展的需求——数据分散、版本混乱、权限管控困难等问题日益凸显。我去年为一家200人规模的科技公司实施这套系统后,他们的HR部门每月节…

2026/10/15 14:46:16 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →