我有一个在Liberty WebSphere Server 17.0.0.2上使用AngularJS + JSP的项目,现在我必须对它进行升级。该项目需要升级到Angular 4 + Liberty,我不知道如何正确地完成它。
我现在尝试的是:
使用Angular-CLI构建项目以生成dist文件夹。然后,我把dist放在WEB-INF>视图上。我还在spring-context.xml,web.xml和server.xml(在Liberty端)上做了引用,但是当我尝试访问localhost时,我得到的是404错误:9090 / AngularPoC / dist / index
先感谢您。
我将概述如何通过(Open)Liberty设置我的Angular应用程序:
ng build
命令的产品复制到.war文件的根目录。这意味着根据您的构建方式将其放在不同的位置。如果您正在使用Eclipse / WDT,这可能意味着将输出设置为您的WebContent
文件夹。如果您使用Gradle与war插件,它会直接进入src/main/webapp
。虽然我最初使用ng build --output-dir=...
设置输出文件夹,但我发现这会删除该文件夹,因此我在每次构建时都丢失了我的web.xml。我建议在构建的后续步骤中复制dist
的内容,除非您可以从上下文根的子文件夹中提供服务。index.html
(location
通常应指向与base-href
相同的位置,请参见下文。)在web.xml中,我有
<error-page>
<error-code>404</error-code>
<location>/</location>
</error-page>
另一种选择是使用使用较旧锚语法的HashLocationStrategy
。路由放在URL的哈希片段中。这意味着您不必设置错误页面,但这也意味着您将来无法使用单独的页面无法替换深层路由 - 如果有任何书签,人们将不得不更新书签。
这是通过更新您的app-routing.module.ts
文件以在导入行上指定RouterModule.forRoot(routes, {useHash: true})
来完成的。base-href
中的index.html
指向包含index.html的路径以及从构建中生成的CSS和JS文件。否则你会发现没有任何负载,你的网络检查员会得到一堆404。如果context-root发生更改,则需要更新此值。我的网络应用程序通常有直接在其下的index.html的上下文根/
,所以我的base-href
是/
。