Angular2(Angular.io)AOT部署到IIS 8

时间:2017-01-18 20:58:39

标签: angular iis-8 windows-server-2012 angular2-aot

我按照Angular.io Tour of Heros示例中概述的步骤建模了一个简单的应用程序。

https://angular.io/docs/ts/latest/tutorial/

我还基于这个例子实现了AOT编译: https://angular.io/docs/ts/latest/cookbook/aot-compiler.html

直接来自Angular.io网站的标准资料。

在我的开发机器上,应用程序的JIT版本可以与lite服务器一起运行。 在我的开发机器上,应用程序的AOT版本可以与lite服务器一起运行。

呀!世界是有道理的!好。现在是时候将应用程序移动到我的2012 / IIS 8开发服务器了。粗略的,没有在Angular.io网站上执行此特定任务的指示,所以我必须做出一些假设。

  1. 我所要做的就是将aot文件夹的内容(基于aot expmple)复制到我的开发服务器。

  2. 由于我不再使用lite服务器,因此我不需要复制bs-config.json文件。

  3. 包已转换为js,css和html文件。 IIS将知道如何处理所有内容(我希望,我也会看到一些地图扩展。我很害怕)。

  4. 果然。我将文件移动到我的开发服务器。这是行不通的。我不确定它是否由于我需要完成的一些步骤才能在IIS上工作,如果它是简单的或两者兼而有之。我得到了可怕的"意外的令牌"错误。当我单击错误链接时,它会将我带到我的index.html中引用build.js文件的位置。

    enter image description here

    enter image description here

    我认为这与IIS有关,因为它在使用lite服务器的本地计算机上运行正常。

    非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

找到答案

我认为问题源于应用程序位于Web服务器上的虚拟目录中。它位于名为dashboard的虚拟目录中。所以...我必须对index.html进行以下更改才能使其正常工作: 将<base href="/">更改为<base href="/Dashboard">

将文件引用<script src="dist/build.js">更改为<script src="Dashboard/dist/build.js">

完整的index.html

<!DOCTYPE html>
<html>
  <head>
    <base href="/Dashboard">
    <title>My Dashboard</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="Dashboard/styles.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css">
    <!-- Polyfill(s) for older browsers -->
    <script src="dashboard/shim.min.js"></script>
    <script src="Dashboard/zone.min.js"></script>
    <script>window.module='aot';</script>
  </head>
  <body>
    <my-app>Loading AppComponent content here ...</my-app>
  </body>
  <script src="Dashboard/dist/build.js"></script>
</html>

希望这有助于其他一些可怜的失去灵魂。问题还没有结束,现在我将处理刷新/未找到的问题。好消息是那里似乎有很多......