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

Platform.uno Wasm项目非根目录部署失败求助

Uno Platform WASM 部署到非根目录的配置方案

要解决部署到https://mywebsite/publish这类子目录的路径问题,不用手动修改index.html,直接通过项目配置就能搞定,步骤如下:

  • 设置项目基础路径
    打开WASM项目的.csproj文件,添加或修改以下属性:

    <PropertyGroup>
      <!-- 填写你的部署子目录,比如publish -->
      <WasmShellBasePath>publish</WasmShellBasePath>
    </PropertyGroup>
    

    这个配置会让Uno在构建时自动调整所有资源路径的前缀,生成的index.html里的资源引用会自动适配子目录,无需手动删除路径开头的/。

  • 适配路由(如果用到路由)
    如果项目使用了Uno的路由系统,在路由初始化代码里(比如App.xaml.cs的OnLaunched方法)添加基础路径配置:

    protected override void OnLaunched(LaunchActivatedEventArgs args)
    {
        // 其他初始化代码...
        Router.BasePath = "/publish";
    }
    

    这能确保路由导航不会跳转到根目录,而是在子目录下正常工作。

  • 检查硬编码的资源路径
    如果项目里有硬编码的绝对路径(比如图片、字体的引用),把它们改成相对路径,或者使用Uno提供的%BASE_PATH%占位符,比如:

    <!-- 原来的绝对路径 -->
    <img src="/images/logo.png">
    <!-- 改成相对路径 -->
    <img src="images/logo.png">
    <!-- 或者用占位符,构建时会自动替换为配置的基础路径 -->
    <img src="%BASE_PATH%images/logo.png">
    
  • 发布与上传
    用Release模式发布WASM项目后,把发布生成的所有文件(包括wwwroot下的内容、index.html、dotnet.js等)完整上传到服务器的/publish目录下,不要遗漏任何文件。

这样配置后,访问https://mywebsite/publish就能正常加载所有资源,不会出现路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:46:04