问题描述
在使用 Tauri 2.x 开发 Windows 桌面应用时,执行 npm run tauri build 打包命令,遇到以下错误:
failed to bundle project `timeout: global`
Error failed to bundle project `timeout: global`
尝试设置 Cargo 超时时间也无效:
$env:CARGO_HTTP_TIMEOUT = 600
npm run tauri build
依然报同样的错误。
问题原因
Tauri 在打包 Windows 应用时,需要下载 NSIS(Nullsoft Scriptable Install System)来生成安装程序。由于网络原因(国内访问 GitHub 较慢),下载 NSIS 时超时导致打包失败。
从错误日志中可以看到,Tauri 尝试下载的是:
https://github.com/tauri-apps/binary-releases/releases/download/nsis-3.11/nsis-3.11.zip
解决方案
手动下载 NSIS 并放到 Tauri 的缓存目录中,绕过自动下载。
步骤一:创建目录
打开 PowerShell,执行:
New-Item -ItemType Directory -Path "$env:LOCALAPPDATA\tauri\NSIS" -Force
这会在 C:\Users\你的用户名\AppData\Local\tauri\ 下创建 NSIS 文件夹。
步骤二:下载 NSIS
使用浏览器或下载工具,下载以下文件:
https://github.com/tauri-apps/binary-releases/releases/download/nsis-3/nsis-3.zip
如果上面的链接下载慢,可以尝试使用代理或镜像站。
步骤三:解压文件
将下载的 nsis-3.zip 解压到刚才创建的目录:
C:\Users\你的用户名\AppData\Local\tauri\NSIS\
解压后的目录结构应该是:
C:\Users\你的用户名\AppData\Local\tauri\NSIS\
├── nsis-3.08\
│ ├── makensis.exe
│ ├── Bin\
│ ├── Contrib\
│ ├── Docs\
│ ├── Include\
│ ├── Plugins\
│ ├── Stubs\
│ └── ...
确保 makensis.exe 在正确的位置。
步骤四:重新打包
回到项目目录,重新执行打包命令:
npm run tauri build
这次应该能顺利完成打包,生成的安装包位于:
src-tauri\target\release\bundle\msi\你的应用名_版本_x64_en-US.msi
src-tauri\target\release\bundle\nsis\你的应用名_版本_x64-setup.exe
补充说明
如果你有代理,也可以通过设置环境变量来解决:
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
npm run tauri build
将 7890 替换为你的代理端口。
总结
Tauri 打包时的 timeout: global 错误,本质上是网络问题导致无法下载 NSIS 工具。通过手动下载并放置到正确的缓存目录,可以完美解决这个问题。
希望这篇文章能帮到遇到同样问题的你!