根因: ws 被打进主进程 bundle 时, 其可选依赖 bufferutil 的打包解析产物 破坏了客户端发帧的 mask fallback; permessage-deflate 协商开启时错误被 压缩路径静默吞掉 —— 表现为 ws 握手成功但所有 CDP 命令零字节发出、 无响应(输入文本节点 10s 超时), dev 与打包版皆受影响。 - electron.vite.config: externalizeDepsPlugin include ws, 运行时 require - package.json: ws 提升到根依赖, electron-builder 随包收集 - electron-builder.config: 确认 node_modules/ws 进入 asar - transport: 显式 perMessageDeflate:false(双保险, 附注释) - package.mjs: verifyLaunch 剥离 ELECTRON_RUN_AS_NODE/NODE_OPTIONS, 防止外部工具链环境把打包应用带进纯 Node 模式(bad option 退出码 9) - flows: 演示流程支持 RPA_DEMO_BROWSER 强制指定浏览器(Chrome 缺装回退 Edge) 验证: 全量测试 349 绿 + 浏览器 e2e 绿 + portable/NSIS 双冒烟通过, 安装包/zip/SHA256 已产出。
47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import { resolve } from "node:path";
|
||
import { defineConfig, externalizeDepsPlugin } from "electron-vite";
|
||
import react from "@vitejs/plugin-react";
|
||
|
||
export default defineConfig({
|
||
main: {
|
||
// ws 必须外部化运行时 require:打包进 bundle 时其可选原生依赖 bufferutil 的解析产物
|
||
// 会破坏 mask fallback(客户端发帧静默丢字节 / 报 mask is not a function)
|
||
plugins: [externalizeDepsPlugin({ include: ["ws"] })],
|
||
resolve: {
|
||
alias: [
|
||
{ find: "@shared", replacement: resolve("src/shared") },
|
||
// rpa-core 包以源码形式打进主进程产物(不作为外部依赖运行时 require)
|
||
{ find: /^@rpa\/core$/, replacement: resolve("packages/rpa-core/src/index.ts") },
|
||
{ find: /^@rpa\/core\/capabilities$/, replacement: resolve("packages/rpa-core/src/capabilities/index.ts") }
|
||
]
|
||
},
|
||
build: {
|
||
rollupOptions: {
|
||
input: { index: resolve("src/main/index.ts"), "local-vision/ui-detect-worker": resolve("src/main/local-vision/ui-detect-worker.ts") }
|
||
}
|
||
}
|
||
},
|
||
preload: {
|
||
plugins: [externalizeDepsPlugin()],
|
||
resolve: {
|
||
alias: {
|
||
"@shared": resolve("src/shared")
|
||
}
|
||
},
|
||
build: {
|
||
rollupOptions: {
|
||
input: { index: resolve("src/preload/index.ts") }
|
||
}
|
||
}
|
||
},
|
||
renderer: {
|
||
plugins: [react()],
|
||
resolve: {
|
||
alias: {
|
||
"@shared": resolve("src/shared"),
|
||
"@renderer": resolve("src/renderer/src")
|
||
}
|
||
}
|
||
}
|
||
});
|