Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在Tomcat中部署React应用程序?_Node.js_Maven_Tomcat - Fatal编程技术网

Node.js 如何在Tomcat中部署React应用程序?

Node.js 如何在Tomcat中部署React应用程序?,node.js,maven,tomcat,Node.js,Maven,Tomcat,问题陈述:我的申请有两部分。 前端和后端。前端使用React构建,后者使用Node.js,后端使用maven web app,前端和后端之间的通信使用REST完成。 我的应用程序在两台服务器上运行。前端在节点上运行。jsans后端在tomcat上运行。 我想要的是在同一台服务器上部署这两个部件 我该怎么做? 我试过的 第一种方法:我尝试使用maven插件。在pom.xml org.codehaus.mojo execmaven插件 执行npm安装 编译 npm --前缀 ${basedir}

问题陈述:我的申请有两部分。 前端和后端。前端使用
React
构建,后者使用
Node.js
,后端使用maven web app,前端和后端之间的通信使用
REST
完成。 我的应用程序在两台服务器上运行。前端在
节点上运行。js
ans后端在tomcat上运行。 我想要的是在同一台服务器上部署这两个部件

我该怎么做?

我试过的

第一种方法:我尝试使用maven插件。在
pom.xml


org.codehaus.mojo
execmaven插件
执行npm安装
编译
npm
--前缀
${basedir}/src/main/webapp/ui
安装
${basedir}/src/main/webapp/ui
执行官
exec网页包
编译
npm
--前缀
${basedir}/src/main/webapp/ui
跑
建造
执行官

Node.js本身就是一个服务器,不能由tomcat处理。您必须同时安装两个服务器应用程序(前端在节点上,后端在tomcat上)

由于tomcat不会为您的前端文件提供服务,所以您不应该将它们安装在tomcat文件夹中并将它们分开(不过您仍然可以使用maven来安装它们)

node.js服务器需要依赖项文件(node_模块文件夹),您无法删除它


中也遇到了类似的难题,这就是我所做的:

  • 在整个项目的根目录中创建了我的Webpack项目,这样我就可以将node_modules文件夹保留在前端之外,并且仍然告诉Webpack将构建内容放在前端中,我的Tomcat应用程序可以从中获取index.jsp。(此文件的输出文件夹必须放在Webpack应用程序中,这就是我必须将其放在上根目录中的内容,即使它看起来不是很有条理)
  • 以下是webpack.production.config中的输出配置:

      output: {
        filename: '[name].[contenthash].js',
        path: path.resolve(__dirname, 'FrontEnd/src/main/webapp/'), 
        publicPath: '' 
      },
    
    因此,当您在控制台中运行npm run build时,webpack将生成输出文件并将其放置在前端中:

    最后,要告诉Webpack生成JSP文件,还要告诉它在每次构建中清除除WEB-INF和META-INF之外的所有内容,您需要向Webpack添加以下插件:

      plugins: [ 
        new CleanWebpackPlugin(['AMS/src/main/webapp/'], {
            exclude: ['WEB-INF', 'META-INF'],
            verbose: true
        }),
        new HtmlWebpackPlugin({ 
          filename:'index.jsp' 
        })
      ]
    
    我希望这会有帮助。。祝你好运