You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法解析模块标识符@tauri-apps/api/http,请求技术协助

解决Tauri中无法解析@tauri-apps/api/http模块的问题

错误原因

浏览器原生模块解析器不支持npm包的"裸导入"(即@tauri-apps/api/http这种不带路径前缀的导入),要么是你没使用前端构建工具处理模块解析,要么是构建工具配置或依赖存在问题。

解决方案

第一步:确保依赖已安装

先执行命令安装Tauri API依赖:

npm install @tauri-apps/api

场景1:使用Vite/Webpack等构建工具(官方推荐)

如果你的项目是通过create-tauri-app创建的,默认集成了Vite,按以下步骤排查:

  1. 检查vite.config.ts(或vite.config.js)是否配置了Tauri插件,正确配置示例:
import { defineConfig } from 'vite';
import { tauri } from '@tauri-apps/vite-plugin';

export default defineConfig({
  plugins: [tauri()],
});
  1. 重启Tauri开发服务器,构建工具会自动处理裸导入的解析。
  2. 修正代码中混合async/await与Promise链式调用的问题(避免逻辑混乱),优化后代码:
import { fetch } from '@tauri-apps/api/http';

document.addEventListener('DOMContentLoaded', async function() {
  const serverIP = 'http://185.221.21.49:30120/players.json';
  const playerCountElement = document.getElementById('player-count');

  try {
    const response = await fetch(serverIP, { method: 'GET', timeout: 1000 });
    console.log("response:", response);
    
    if (!response.ok) {
      throw new Error(`Network response was not ok: ${response.statusText}`);
    }
    
    const data = response.data;
    if (data && data.players) {
      playerCountElement.textContent = `Játékosok száma: ${data.players.length}`;
    } else {
      playerCountElement.textContent = "Játékosok száma: Nem sikerült lekérni";
    }
  } catch (error) {
    console.error("Error fetching player count:", error);
    playerCountElement.textContent = "Játékosok száma: Nem sikerült lekérni";
  }
});

场景2:纯静态HTML(无构建工具)

这种情况需要改用相对路径或CDN链接导入模块:

方法1:使用CDN导入

替换原导入语句为对应版本的CDN链接(版本号需与本地安装的@tauri-apps/api一致):

import { fetch } from 'https://cdn.jsdelivr.net/npm/@tauri-apps/api@1.5.3/http.js';

方法2:本地引入打包文件

  1. 从项目的node_modules/@tauri-apps/api/dist目录,复制http.js(或整个dist文件夹)到你的静态资源目录(如public)。
  2. 使用相对路径导入:
// 假设http.js放在当前脚本同级目录
import { fetch } from './http.js';
// 若复制了整个dist文件夹
import { fetch } from './dist/http.js';
  1. 确保HTML中的script标签添加type="module"属性:
<script type="module" src="./your-script-file.js"></script>

最后:检查Tauri权限配置

在tauri.conf.json的allowlist中开启HTTP请求权限,避免请求被拦截:

"allowlist": {
  "http": {
    "request": true,
    // 建议限制允许的域名,提升安全性
    "scope": ["http://185.221.21.49:30120/*"]
  }
}

内容的提问来源于stack exchange,提问作者Amadeus s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:13:17