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

Flutter Web发布版部署后timezone包失效,报错排查求助

Flutter Web发布版部署后timezone包失效,报错排查求助

我最近在开发一个Flutter Web应用,用到了timezone包,本地用Chrome调试的时候一切正常,但部署到Azure App Service的发布版却一直报错,实在找不到解决办法,来向大家求助!

问题背景

  • 本地调试:直接运行Flutter Web,timezone包的功能完全正常,能正确获取时区时间
  • 发布部署:用flutter build web打包后,把build/web目录下的所有内容复制到Azure App Service的wwwroot目录下,部署完成后访问就报错

最初遇到的错误

调用时区初始化和获取时区时间的代码如下:

import 'package:timezone/browser.dart' as tz;

Future<void> _setup() async {
  await tz.initializeTimeZone();
}

void _getTime() {
  setState(() {
    var newYork = tz.getLocation('America/New_York');
    _now = tz.TZDateTime.now(newYork);
  });
}

部署后出现的错误是:Invalid argument(s): Invalid typed array length: 1008813135

尝试过的解决方法

我已经做了这些尝试,但还是没解决问题:

  1. 严格按照pub.dev上针对Flutter Web的配置说明操作,问题依然存在
  2. 查看了timezone包的相关讨论,看到一个 workaround 方案:
    • 在pubspec.yaml中添加asset配置:
      assets:
        - packages/timezone/data/latest_10y.tzf
      
    • 修改初始化代码,指定时区数据库文件路径:
      await tz.initializeTimeZone('assets/packages/timezone/data/latest_10y.tzf');
      
    但修改后错误变成了找不到时区数据库文件,可我明明在服务器的对应目录下能看到这个latest_10y.tzf文件,实在搞不懂为什么会找不到

补充说明

我专门做了一个最小复现的Flutter项目,这个项目本地运行完全正常,只有部署到服务器的发布版才会触发问题。

有没有朋友遇到过类似的问题?或者能给我一些排查的方向和建议?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 14:49:51