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

Flutter 3.29.0编译WASM部署Apache报错:期望JS模块但MIME类型为空

问题分析与解决方案

你遇到的错误是因为Apache服务器未正确配置WASM及相关模块的MIME类型,同时index.html的脚本标签缺少必要的模块声明,导致浏览器无法正确识别加载的资源。以下是具体修复步骤:

1. 配置Apache的MIME类型

Apache默认未为WASM和ES模块文件设置正确的MIME类型,需手动添加。可通过两种方式配置:

  • 修改全局配置文件(如httpd.conf或apache2.conf):
    AddType application/wasm .wasm
    AddType text/javascript .mjs
    
  • 使用.htaccess文件(若服务器允许Override):
    在项目根目录创建或编辑.htaccess,添加上述配置内容。

2. 修正index.html的脚本标签

Flutter WASM版本的加载逻辑依赖ES模块,你的脚本标签缺少type="module"属性,导致浏览器无法以模块方式解析代码。将原脚本标签修改为:

<script type="module" async>
    {{flutter_js}}
    {{flutter_build_config}}

    const searchParams = new URLSearchParams(window.location.search);
    const forceCanvaskit = searchParams.get('force_canvaskit') === 'true';
    const userConfig = forceCanvaskit ? {'renderer': 'canvaskit'} : {};

    const loading = document.getElementById('loading');
    const loadingTitle = document.getElementById('loadingTitle');
    loadingTitle.textContent = "Schritt 1/3";
    loading.textContent = "Lade Framework...";

    _flutter.loader.load({
      config: userConfig,
      serviceWorkerSettings: {
        serviceWorkerVersion: {{flutter_service_worker_version}},
      },
      onEntrypointLoaded: async function(engineInitializer) {
        loadingTitle.textContent = "Schritt 2/3";
        loading.textContent = "Initialisiere Engine...";
        const appRunner = await engineInitializer.initializeEngine();

        loadingTitle.textContent = "Schritt 3/3";
        loading.textContent = "Starte App...";
        await appRunner.runApp();
      }
    });
</script>

核心是添加type="module"属性,让浏览器识别这是一个ES模块脚本。

3. 验证文件权限

确保Apache进程对Flutter构建生成的build/web目录下所有文件(包括.wasm、.mjs等)有读取权限。通常设置文件权限为644、目录权限为755即可。

为什么强制Canvaskit能正常运行?

因为Canvaskit渲染模式下,Flutter会加载预编译的CanvasKit JS模块,该模块不依赖WASM文件加载,因此不会触发MIME类型错误;而默认的HTML渲染模式依赖WASM文件,必须确保服务器正确返回其MIME类型才能正常加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 02:09:52