Flutter Web 基础 href 子文件夹

问题描述 投票:0回答:3

我正在尝试部署到 IIS。不在根目录中,而是在子文件夹中。 这是工作:

  • 编辑 web/index.html,将
    <base href="/">
    更改为
    <base href="/ChangeTag/">
  • 运行 flutter build web 命令
  • build/web/index.html 没问题,有新的更改。

完美!

但是,当我尝试使用本地主机进行调试时:找不到网页 - 错误 404

我想要的是部署(自动),在wwwroot的子文件夹内并执行本地测试,而不需要多次修改index.html

是否可以像在 Angular 中那样做一些事情,使用代理,使用不同的构建配置等?

谢谢

flutter iis href radix
3个回答
23
投票

将 flutter 和 dart 升级到当前版本(测试版通道)后,我遇到了类似的问题,我的意思是它在调试模式下很好,但在构建发布上不起作用。 我做了什么?我刚刚在

<base href="/">
文件(位于
index.html
文件夹内)评论了这
<your_app_folder_name>/web
行,并且两者(调试和发布版本)都像魅力一样恢复了工作。

我通过更改线路发表评论

<base href="/">

<!-- <base href="/"> -->

进行更改并:尝试运行

flutter build web
命令,将位于
web
路径的生成的
<your_app_folder_name>/build/
文件夹复制到网络服务器的任何子文件夹(例如
<your_websrv_root>/webtestfolder
),它将在该地址上工作您浏览器的
http://webtestfolder


10
投票

停止手动更新base-href

而不是使用

flutter build web

尝试

flutter build web --base-href /sub_folder_name/

这将更改您的

build/web/index.html

的基本 URL

奖金

或者如果您使用 github actions 部署在 github-pages 上。 这将创建一个子文件夹名称,与您的存储库名称相同(username.github.io/{repo-name})

- run: flutter build web --base-href /${{ github.event.repository.name }}/

这是完整的工作流程示例:flutter_github_pages_deploy.yaml

注意 只需确保您的

web/index.html
包含

<base href="$FLUTTER_BASE_HREF">

2
投票

答案位于 web 文件夹(而不是 /build/web)的 index.html 文件中

<!DOCTYPE html>
<html>
<head>
  <!--
    If you are serving your web app in a path other than the root, change the
    href value below to reflect the base path you are serving from.

    The path provided below has to start and end with a slash "/" in order for
    it to work correctly.

    For more details:
    * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
  -->
  <base href="/sub-folder/">

  <meta charset="UTF-8">
  <meta content="IE=Edge" http-equiv="X-UA-Compatible">
© www.soinside.com 2019 - 2024. All rights reserved.