Tauri的dialog和notification模块无响应且返回null该如何解决?
Tauri dialog模块调用返回null无弹窗问题排查方案
以下是按优先级排序的排查步骤:
- 确认运行环境是否正确
绝对不要直接在系统浏览器中打开前端页面调试,必须通过tauri dev命令启动应用,在Tauri内置的WebView窗口中测试API,直接在浏览器运行时没有Tauri Rust后端上下文,所有原生API调用都会异常返回null。 - 核对权限配置正确性
检查tauri.conf.json配置,Tauri V1和V2的权限配置格式不同,不要混用:
👉 Tauri V1配置示例:
👉 Tauri V2需要额外在{ "tauri": { "allowlist": { "dialog": { "all": true, "open": true }, "notification": { "all": true } } } }capabilities配置中添加对应权限,仅配置allowlist不生效。 - 核对依赖版本一致性
检查package.json中@tauri-apps/api的版本,和src-tauri/Cargo.toml中tauri依赖的版本必须匹配,大版本号不一致会出现API调用无响应的问题。 - 排除参数兼容问题
Windows下相对路径解析可能存在异常,可先使用无参数调用测试:
确认弹窗可用后再逐步添加参数调试。// 移除所有配置参数,测试默认弹窗是否能弹出 const pathName = await openDialog() - 排查系统拦截问题
部分Windows安全软件、弹窗拦截工具会拦截未知程序的系统弹窗,可尝试将编译后的exe添加到安全软件白名单,或者右键以管理员身份运行测试。 - 排除框架语法问题
可先写最简测试用例排除vue-class-component的语法兼容问题:
测试时打开WebView开发者工具(按F12)查看控制台是否有明确报错信息。<template> <button @click="testDialog">测试dialog</button> </template> <script setup> import { open } from '@tauri-apps/api/dialog' const testDialog = async () => { const res = await open() console.log('dialog返回结果:', res) } </script>
内容的提问来源于stack exchange,提问作者very_log
相关产品推荐
相关产品推荐

