Java 前端maven插件是否在开发模式下阻止服务器响应?

Java 前端maven插件是否在开发模式下阻止服务器响应?,java,node.js,reactjs,maven,frontend-maven-plugin,Java,Node.js,Reactjs,Maven,Frontend Maven Plugin,我主要是一名java开发人员,拥有最少的node.js经验。我开发了一个JavaSpring应用程序,并决定为其提供一个最小的前端,这是我在React中完成的,是用CreateReact应用程序创建的。我在AWS中部署和运行它时遇到了一些问题,有一些端口限制,因此建议我使用前端maven插件将其打包到一个jar中,然后从那里运行它。我已经成功地做到了这一点,至少在本地是如此 然而,现在我想回到开发模式并添加更多功能,似乎有什么东西阻止了服务器返回前端的响应。当我说开发模式时,我的意思是我回到了使

我主要是一名java开发人员,拥有最少的node.js经验。我开发了一个JavaSpring应用程序,并决定为其提供一个最小的前端,这是我在React中完成的,是用CreateReact应用程序创建的。我在AWS中部署和运行它时遇到了一些问题,有一些端口限制,因此建议我使用前端maven插件将其打包到一个jar中,然后从那里运行它。我已经成功地做到了这一点,至少在本地是如此

然而,现在我想回到开发模式并添加更多功能,似乎有什么东西阻止了服务器返回前端的响应。当我说开发模式时,我的意思是我回到了使用“npm start”,本地react客户端通过端口3000运行,并且package.json中有一个条目让代理指向本地运行的api。我已经验证了来自React页面的请求正在到达服务器,但是响应永远不会返回到客户端。我查看了Chrome developer中的网络流量,它只说“加载响应数据失败”

当我向同一个api端点发出请求时,例如在浏览器中,响应返回良好。响应是一个简单的json

我在React组件中使用fetch来调用后端api。下面的例子

当我通过maven和前端maven插件运行node或NPM时,我假设它安装了一些东西,这会影响到这一点。NPM对我来说是一个巨大的黑匣子,所以我不确定如何进一步诊断这个问题,或者寻找是什么阻止了对react页面的响应

项目结构如下所示:

/root-app-repo-name
  /app - the React app; unfortunately named when created with Create React App
    /build
    /node
      /node_modules
    /node_modules
    /public
    /src
  /src - java source
  /target
    maven build output jar is here
  pom.mxml
为什么有两个节点模块文件夹

使用fetch调用API的React组件示例:

import React, { Component } from 'react';
import { Button, Container, Table } from 'reactstrap';

class Account extends Component {

  constructor(props) {
    super(props);
    this.state = {account: {}, isLoading: true};
  }

  componentDidMount() {
    this.setState({isLoading: true});

    fetch(process.env.API_URL+'/api/account')
      .then(response => response.json())
      .then(data => this.setState({account: data, isLoading: false}));
  }

  render() {
    const {account, isLoading} = this.state;

    if (isLoading) {
      return <p>Loading...</p>;
    }

    return (
      <div>
        <Container fluid>
            Account Num : {account.accountNum}
        </Container>
      </div>
    );
  }
}

export default Account;
import React,{Component}来自'React';
从“reactstrap”导入{按钮、容器、表};
类帐户扩展组件{
建造师(道具){
超级(道具);
this.state={account:{},isLoading:true};
}
componentDidMount(){
this.setState({isLoading:true});
获取(process.env.API_URL+'/API/account')
.then(response=>response.json())
.then(data=>this.setState({account:data,isLoading:false}));
}
render(){
const{account,isLoading}=this.state;
如果(孤岛加载){
返回加载…

; } 返回( 帐号:{Account.accountNum} ); } } 导出默认帐户;
抱歉,此描述不足以诊断此问题。“我假设node或NPM在通过maven运行时安装了某些东西”如果您检查maven输出,它将告诉您它正在将node安装到自己的子目录中(默认情况下
目标/node/
)。此版本的节点与您手动安装的任何版本完全隔离。我将避免直接使用NPM执行任何操作。这似乎是你困惑的根源。从你的描述很难看出你在跑什么。使用Maven构建它,然后运行JAR。如果手动安装的节点版本更容易卸载,请卸载该版本。你不应该需要它。我使用CreateReact应用程序来创建最小的单页应用程序;说明书上说要使用
npm start
;我想继续开发这个应用程序;似乎我应该继续使用npm来实现这一点?
NPMStart
创建了自己的web服务器,完全忽略了Spring的嵌入式服务器。