为什么在将 Angular Spring 战争文件部署到 Apache Tomcat 时出现空白页面

Mox_z

我正在尝试将一个 Angular 应用程序与一个 Spring Boot 应用程序打包为一个 war 文件,以便我可以将它部署到我的 Apache Tomcat 服务器。我已经构建了 angular 应用程序并将文件复制到我的 /public/ 文件夹,以便 Spring Boot 可以为它们提供服务。这是有效的,我能够成功访问我的 Web 应用程序。

使用 Intellij 将应用程序打包为 war 文件后,我部署了该应用程序,但是当我访问该页面时,我得到:

  • 一个空白的白页

  • 开发工具指示 GET http://localhost:8080/runtime.a66f828dca56eeb90e02.js net::ERR_ABORTED 404

  • 公共文件夹中除 index.html 之外的所有其他文件的类似消息

我的目标公共目录

此图像显示了完成构建和打包战争后我的公共目录。我尝试了几种不同的配置,但我对 maven 很陌生,我只是在学习。下面是我的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>taskappmain</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>taskappmain</name>
  <description>taskAppMain</description>

  <packaging>war</packaging>

  <properties>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.0</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.github.eirslett</groupId>
        <artifactId>frontend-maven-plugin</artifactId>
        <version>1.9.1</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <id>copy-resources</id>

                    <phase>validate</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/classes/public</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/main/resources/public</directory>
                                <filtering>true</filtering>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>


        <!-- https://mvnrepository.com/artifact/com.github.eirslett/frontend-maven-plugin -->
        <plugin>
            <groupId>com.github.eirslett</groupId>
            <artifactId>frontend-maven-plugin</artifactId>
            <version>1.9.1</version>
            <configuration>
                <nodeVersion>v8.11.3</nodeVersion>
                <npmVersion>6.3.0</npmVersion>


       <workingDirectory>C:\Users\zemcd\IdeaProjects\AppWarPackage\taskAppFrontEnd</workingDirectory>
            </configuration>
            <executions>
                <execution>
                    <id>install node and npm</id>
                    <goals>
                        <goal>install-node-and-npm</goal>
                    </goals>
                </execution>
                <execution>
                    <id>npm install</id>
                    <goals>
                        <goal>npm</goal>
                    </goals>
                </execution>
        <execution>
            <id>npm run build</id>
            <goals>
                <goal>npm</goal>
            </goals>
            <configuration>
                <arguments>run build</arguments>
            </configuration>
        </execution>
        <execution>
            <id>prod</id>
            <goals>
                <goal>npm</goal>
            </goals>
            <configuration>
                <arguments>run-script build</arguments>
            </configuration>
            <phase>generate-resources</phase>
        </execution>
    </executions>
</plugin>

    </plugins>
</build>

</project>

以及我的 angular 应用程序的 package.json:

{
  "name": "task-app-front-end",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve --proxy-config proxyconfig.json",
    "build": "ng build --prod",
    "postbuild": "npm run deploy",
    "test": "ng test",
    "outDir": "../taskappmain\\src\\main\\resources\\public",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
  "@angular/animations": "^6.0.0",
  "@angular/common": "^6.0.0",
  "@angular/compiler": "^6.0.0",
  "@angular/core": "^6.0.0",
  "@angular/forms": "^6.0.0",
  "@angular/http": "^6.0.0",
  "@angular/platform-browser": "^6.0.0",
  "@angular/platform-browser-dynamic": "^6.0.0",
  "@angular/router": "^6.0.0",
  "core-js": "^2.5.4",
  "rxjs": "~6.3.3",
  "zone.js": "^0.8.26"
}, 
"devDependencies": {
"@angular/compiler-cli": "^6.0.0",
"@angular-devkit/build-angular": "~0.6.0",
"typescript": "~2.7.2",
"@angular/cli": "~6.0.0",
"@angular/language-service": "^6.0.0",
"@types/jasmine": "~2.8.6",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "~4.2.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~1.7.1",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~1.4.2",
"karma-jasmine": "~1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.3.0",
"ts-node": "~5.0.1",
"tslint": "~5.9.1"
  }
}

我想知道:

  • 打包war文件时我做错了什么?

  • 打包为 war 文件时,如何使我的资源可供 angular 应用程序访问?

在此先感谢您的帮助。

Mox_z

我通过更改基本标签中的 href 设法解决了这个问题。因为我是在 Tomcat 上部署应用程序并且它没有部署在路径“/”上,所以我的应用程序无法找到它所需的资源。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

java spring boot - 战争文件未部署在Apache Tomcat上

使用 Jenkins 将战争文件部署到 Tomcat 的推荐方法?

为什么我的JSP文件时Tomcat的战争文件部署的显示?

将WAR部署到Tomcat(Spring Boot + Angular)

将战争文件部署到Payara Micro时出错

Apache Ant如何将.war文件部署到Tomcat

Spring Boot-将war文件部署到tomcat时自动生成context.xml

Spring Boot-在部署到Tomcat时将属性文件放在哪里?

为什么需要简单文件时出现空白页?

如何部署春季启动战争文件到Tomcat时指定的个人资料?

在tomcat7上以战争方式部署的Spring Boot应用程序失败,并出现错误“发现了多个名称为[org_apache_tomcat_websocket]的片段”

将Hippo CMS部署到tomcat(浏览器中显示空白页面,curl中提供页面源)

我将Storybook用于Angular时出现空白页?

Docker组成,将战争部署到Tomcat,运行oracle服务

将战争部署到不受netbeans管理的本地Tomcat实例

Angular 2和Spring Boot-部署到战争

将 spring boot 部署到 tomcat 时出现“未找到指定孩子的公钥”错误

将Spring Boot部署到Tomcat

将 spring boot war 部署到 tomcat

无法将Spring Boot战争部署到Elastic Beanstalk

为什么Spring Security在Tomcat中可以工作,而在部署到Weblogic时却不能工作?

在Spring Boot的Tomcat和Angular App上部署WAR文件

如何将工件从 Azure DevOps 部署到 Apache Tomcat?

启动孩子将Spring Boot Web应用程序部署到Tomcat 9时出错

将Spring Boot .war部署到tomcat时,无法启动组件[StandardEngine [Catalina]]

将Springboot WAR部署到Tomcat 8.5显示空白页

为什么使用Spring Boot在Tomcat 7取消部署时关闭数据源

将 Wiremock 作为战争部署到 Weblogic 时的验证问题

Maven如何将战争部署到远程Tomcat或Jetty服务器