问题陈述:我的应用程序有两个部分。
前端和后端。前端使用React
构建,使用Node.js
,后端是maven web app,前端和后端之间的通信使用REST
完成。
我的应用程序在两台服务器上运行。前端正在Node.js
运行,而后端正在tomcat上运行。
我想要的是在同一台服务器上部署这两个部分。
我该怎么做?
我尝试了什么。
第一种方法:我尝试使用maven插件。在pom.xml
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>exec-npm-install</id>
<phase>compile</phase>
<configuration>
<executable>npm</executable>
<arguments>
<argument>--prefix</argument>
<argument>${basedir}/src/main/webapp/ui</argument>
<argument>install</argument>
<argument>${basedir}/src/main/webapp/ui</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
<execution>
<id>exec-webpack</id>
<phase>compile</phase>
<configuration>
<executable>npm</executable>
<arguments>
<argument>--prefix</argument>
<argument>${basedir}/src/main/webapp/ui</argument>
<argument>run</argument>
<argument>build</argument>
</arguments>
</configuration>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
在后端web-app文件夹中添加了前端应用程序文件夹。
但是这种方法的问题是,当我mvn install
下载所有node module
时,由于节点模块,项目的大小变得非常大(700MB
)。
这不是欲望。
我该怎么做?
答案 0 :(得分:0)
Node.js本身就是一个服务器,并且不能由tomcat处理。您必须并排安装两个服务器应用程序(节点上的前端和tomcat上的后端)。
由于tomcat不支持您的前端文件,因此不应将它们安装在tomcat文件夹中并将它们分开(尽管如此,您仍然可以使用maven进行安装)。
node.js服务器需要依赖文件(node_module文件夹),你无法摆脱它。
中答案 1 :(得分:0)
这是webpack.production.config中输出的配置:
output: {
filename: '[name].[contenthash].js',
path: path.resolve(__dirname, 'FrontEnd/src/main/webapp/'),
publicPath: ''
},
因此,当您在控制台中运行npm run build时,webpack会生成输出文件并将其放置在FrontEnd中:
最后,要告诉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'
})
]
希望对您有帮助。祝您好运!