【问题标题】:Why Angular 7 application doesn't run locally in the browser为什么 Angular 7 应用程序不在浏览器中本地运行
【发布时间】:2019-06-30 17:52:22
【问题描述】:

通常,我开发的所有网络应用程序都使用文件系统在浏览器上本地运行,方法是启动 index.html,然后通过嵌入式脚本和 css 链接获取所有其他文件。

但是,如果我尝试对 Angular 生成的构建应用程序执行相同操作 ng build --prod --base-href ./ 或者 ng build --prod --aot --base-href ./ 应用程序根本没有运行。

有趣的是,没有控制台错误,浏览器甚至下载了所有需要的文件,如下所示。

为什么会这样?有解决办法吗?

编辑:我知道普通的 Angular 应用程序是如何工作的。我只是想知道为什么尽管有所有必需的文件,但为什么应用程序无法以传统方式加载到浏览器中。

【问题讨论】:

    标签: javascript angular web-applications angular-cli


    【解决方案1】:

    ng build 命令构建 Angular 应用程序,但不会启动本地开发 Web 服务器来运行应用程序。

    要构建并启动您需要运行的应用,

    ng serve
    

    然后您可以在http://localhost:4200http://localhost:4200查看在浏览器中运行的应用程序

    【讨论】:

    • 感谢您的回答,但我知道您在说什么。我的问题是,如果我有 Angular 客户端捆绑的所有必需的 JS 和 CSS 文件,为什么我不能在浏览器中正常运行这些文件。
    • 默认的 Angular 路由策略是基于路径的。也就是说,它依赖于 HTML pushState API 以及配置了重写的兼容 Web 服务器。您应该能够使用基于散列的路由模型并在没有 Web 服务器的情况下运行。
    【解决方案2】:

    这是因为当您构建 Angular 应用程序时,您会为基本 href 构建它。 所有资源等都与该基本 href 相关。

    如果您使用角度分布文件所在的确切位置编辑构建的 index.html 文件的基本 href,它将起作用。

    例如我这样构建我的应用程序:

    ng build --prod --base-href /test/
    

    建立的索引文件:

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Testtalha</title>
      <base href="/test/">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="icon" type="image/x-icon" href="favicon.ico">
    <link rel="stylesheet" href="styles.3ff695c00d717f2d2a11.css"></head>
    <body>
      <app-root></app-root>
    <script type="text/javascript" src="runtime.26209474bfa8dc87a77c.js"></script><script type="text/javascript" src="es2015-polyfills.bda95d5896422d031328.js" nomodule></script><script type="text/javascript" src="polyfills.8bbb231b43165d65d357.js"></script><script type="text/javascript" src="main.4eae417d78b7086fd00a.js"></script></body>
    </html>
    

    当我按照我的解释更新基本 href 时,它可以在本地浏览器上运行。如下所示:

    <base href="./">
    

    编辑:我刚刚意识到我把你的问题弄错了。如果您的问题与没有任何服务器的本地浏览器上的路由有关,请检查此答案。您需要摆脱推送状态并提供适当的基础href:https://stackoverflow.com/a/45163344/11420760

    但是,如果您说您的应用程序甚至没有打开甚至没有渲染一些东西,那么您的情况似乎有点复杂。这里有一个长线程,类似的讨论:https://github.com/angular/angular/issues/13948

    我建议创建一个空的测试项目并尝试使用它,这样您就可以查明导致项目异常的原因。

    【讨论】:

      猜你喜欢
      • 2020-06-19
      • 2011-06-17
      • 2020-06-10
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      相关资源
      最近更新 更多