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

Yew Wasm Rust实现版权年份自动更新时页面无法加载

故障原因

代码运行后白屏无报错的核心原因是chrono库默认配置未适配Wasm运行环境:

  • 默认启用的特性依赖原生操作系统时间接口,在wasm32-unknown-unknown编译目标下,直接调用chrono::Utc::now()会触发不可恢复的panic,直接导致整个Wasm应用初始化失败、页面无法渲染。这类启动阶段的panic在部分trunk版本下不会正常输出到浏览器控制台。
  • 原代码中多余的空Fragment包裹、语义标签误用不会直接导致崩溃,但属于非必要写法。
修复方案

按以下步骤调整即可正常运行:

  1. 修正chrono依赖配置,开启Wasm兼容特性
    打开项目根目录的Cargo.toml,找到chrono的依赖行,替换为以下配置:
    chrono = { version = "0.4", default-features = false, features = ["std", "clock", "wasmbind"] }
    

    配置说明:关闭默认特性可以移除依赖原生系统libc的不兼容代码,wasmbind特性会让chrono调用浏览器原生的JS时间接口获取时间,完全适配Wasm运行环境。

  2. 优化组件代码,移除冗余写法
    替换原Footer组件代码为以下内容:
    use yew::prelude::*;
    use chrono::prelude::*;
    
    #[function_component(Footer)]
    pub fn footer() -> Html {
        let current_year = Utc::now().year();
        html! {
            <div class="static bottom-0 bg-[#fff] opacity-90 container mx-auto max-w-3xl py-8"> 
                <footer>
                    <div class="flex justify-center space-x-4">
                        <p>{ format!("Copyright {} Name. All Rights Reserved.", current_year) }</p>
                    </div>
                </footer>
            </div>
        }
    }
    

    改动说明:移除外层无意义的空Fragment包裹,将版权文本的h1标签替换为更符合语义的p标签,直接提取年份值减少不必要的中间变量。

  3. 清理构建缓存后重启服务
    终端内执行以下命令清理旧的构建产物,再重新启动开发服务即可:
    trunk clean
    trunk serve
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:42:21