【发布时间】:2018-09-23 20:11:04
【问题描述】:
我在使用 Spring Boot 部署 react nodejs 应用程序时遇到问题。 spring 应用程序可以与基本的 HTML/JS 一起正常工作,并且我的 react 应用程序在开发模式下运行良好,但就正确捆绑 react 和 spring 而言,我似乎遗漏了一些东西。
目前,我可以使用一些简单的 HTML 和 javascript ajax 调用(无反应)来运行/部署我的 Spring Boot 应用程序。它在我的 AWS ec2 上运行没有问题。
我还可以通过节点 JS“npm start”在开发模式下运行我的 react 应用程序,并将其指向我的本地 spring boot 应用程序。 (我将"proxy": "http://localhost:8080" 添加到manifest.json)。我正在努力将我的反应应用程序与我的 Spring 应用程序的其余部分实际捆绑到战争中并让它工作的下一步。如果没有休息电话,我什至无法加载 react hello-world 页面。
我尝试运行npm run build,然后将/build 目录中生成的所有文件复制到我的spring 项目的/src/main/resources。
具体是我抄的:
react-app/build/static/* -> spring-app/src/main/resources/static/.
react-app/build/* -> spring-app/src/main/resources/.
在构建战争 (mvn install) 并在本地运行战争之后,我在尝试加载服务器时遇到 404 错误,而没有指定任何页面。当我指定 index.html 时,我收到错误,它无法在我的静态目录中加载 JS 和 CSS 文件。当我将战争部署到 ec2 并尝试加载页面时,也会出现同样的问题。
我还缺少更多配置步骤吗?我知道我可能需要做一些基本的 URL 配置才能在开发模式之外使用其余 API,但是如果没有任何休息调用,我什至无法加载页面。我尝试将 index.html 移动到各个位置,例如 /resources/static 和 /resources/public。任何帮助将不胜感激。
【问题讨论】:
-
我认为将前端应用程序与后端捆绑在一起是一个非常糟糕的主意,原因有很多。大仓库,关注点分离差,复杂的发布周期/部署,紧密耦合,你可能有多个 UI - 例如。 web 和 native,为不需要关心 java 或 maven 等的 UI 开发人员提供更多设置。为什么不拥有两个项目,因为它们彼此不依赖,UI 就像任何其他客户端一样使用 API。
-
是的,我现在同意哈哈。我想我会放弃这个想法并将客户端托管在heroku或firebase或其他东西上,并将spring应用程序单独托管在aws上。通过这种方式,我可以让反应文件更有条理。
-
是的,我想是的!
标签: node.js reactjs spring-boot