我,想撤消我的Angular项目,但它丢失了组件
第1步:
我执行cmd:
ng-build --prod
第2步:
我正在使用 dist
内的路径在IIS中添加网站第3步:
索引页工作正常,但未找到其他组件登录404
http://localhost/login HTTP错误404.0-找不到
在文件 App.Module.Ts 中,我是配置路由
const routesConfig:Routes=
[
{path:"kinds",component:KindsComponent},
{path:"",component:FilmsComponent},
{path:"films",component:FilmsComponent},
{path:"login",component:LoginComponent},
{path:"accounts",component:AccountsComponent},
{path:"customers",component:CustomersComponent},
{path:"director",component:DirectorComponent}
];
再次说明: http://localhost正常工作,但是在我构建项目并在IIS中部署时找不到其他组件
它如何工作?我的错误在哪里?
答案 0 :(得分:1)
您需要在IIS中为任何路由创建到 index.html 的重定向,因为在Angular SPA中,应用负责路由而不是服务器。请参见Angular routing。 / p>
例如请求 http://yourdomain/ ->为 index.html 提供服务,最后启动了应用程序。
但例如已请求 http://yourdomain/login ,并且没有服务器端重定向到index.html
,服务器没有任何资源映射到该路由,并使用404 - Not Found
解决了请求错误。
一旦您为任何会导致404 - Not Found
错误(除css,images字体等资产)结束的请求提供服务 index.html ,Angular路由器就会接管并显示应用程序启动后即可查看。
以下是IIS的重写规则示例:
<rule name="Angular" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>