Tauri集成Discord.JS报Big integer literals不可用错误咨询
结论
Tauri 和 discord.js 可以搭配使用,不需要强制拆分为两个独立项目。你遇到的 BigInt 报错是构建配置位置错误导致的,不是二者存在底层兼容性冲突。
报错原因
你之前修改 tsconfig.json 中 compilerOptions.target 不生效的核心原因是:Vite 内部使用 esbuild 转译 node_modules 目录下的依赖,tsconfig 的配置仅作用于你自己编写的 TS/TSX 源码,不会覆盖 esbuild 的默认构建目标。
discord.js v13 及以上版本强依赖 BigInt 特性,而 Vite 默认适配的低版本 Webview 环境(chrome87、edge88、es2019、firefox78、safari13.1)不支持 BigInt 字面量,因此触发构建错误。
额外注意:discord.js 是 Node.js 原生生态模块,依赖 Node 内置的 net、tls 等系统 API,不能直接在 Tauri 前端渲染进程(React 代码运行的 Webview 环境)中执行机器人逻辑,这是环境约束,和 BigInt 报错无关。
解决步骤
- 修改 Vite 构建配置,统一全链路构建目标为 ES2020(原生支持 BigInt)。打开项目根目录的
vite.config.ts,补充如下配置:
import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ plugins: [react()], esbuild: { target: 'es2020' }, build: { target: 'es2020' }, optimizeDeps: { esbuildOptions: { target: 'es2020' } } })
- 检查 browserslist 配置。如果
package.json中存在browserslist字段,或者项目根目录有.browserslistrc文件,需要将目标版本调整为支持 BigInt 的最低版本及以上,避免 Vite 读取该配置覆盖手动设置的构建目标,参考配置:
"browserslist": [ "chrome >= 89", "edge >= 89", "firefox >= 88", "safari >= 14" ]
- 调整 discord.js 逻辑的运行位置:
不要在 React 组件/前端代码中直接引入 discord.js 初始化机器人。如果不想拆分仓库,可以在项目内单独维护一个 Node.js 入口文件编写所有机器人逻辑:开发阶段用concurrently同时启动 Vite 开发服务和 Node 机器人进程;打包时将 Node 脚本作为外部资源打包进 Tauri 安装包,运行时通过 Tauri 的 shell 能力拉起本地 Node 进程,前端面板通过 Tauri 事件系统和机器人逻辑通信即可。
如果你需要机器人独立于桌面端运行(比如支持服务器部署、多端接入),再考虑拆分独立的机器人服务项目,这属于架构选型选择,不是技术强制要求。
补充说明
网上搜到的浏览器环境运行 discord.js 的过时 issue 均针对纯网页场景,Tauri 具备本地系统调用能力,不需要强行把 discord.js 打包进 Webview 沙箱中运行,单仓库完全可以支撑整个应用的开发。
内容的提问来源于stack exchange,提问作者none
相关产品推荐
相关产品推荐

