Node.js 在单个Azure Web应用程序中具有角度前端的Node/Express后端

Node.js 在单个Azure Web应用程序中具有角度前端的Node/Express后端,node.js,angular,express,azure-web-app-service,Node.js,Angular,Express,Azure Web App Service,我在dev中有一个Node/Express设置,它将数据作为JSON输出以供使用。在dev中,端点是localhost:3000/data 我还有一个Angular 8应用程序,位于前端的同一节点目录中。在dev中,我启动了两个单独的节点命令提示。。。一个在端口3000运行node/express,另一个在端口4200运行angular 目标是让Angular应用程序输出Node/Express后端提供的数据。。。在Azure Web应用程序中 我读过一些文章,其中说明了如何将Angular部署

我在dev中有一个Node/Express设置,它将数据作为JSON输出以供使用。在dev中,端点是localhost:3000/data

我还有一个Angular 8应用程序,位于前端的同一节点目录中。在dev中,我启动了两个单独的节点命令提示。。。一个在端口3000运行node/express,另一个在端口4200运行angular

目标是让Angular应用程序输出Node/Express后端提供的数据。。。在Azure Web应用程序中

我读过一些文章,其中说明了如何将Angular部署到Web应用程序,但是我是否可以让Node/Express后端服务数据和Angular应用程序在单个Azure Web应用程序中运行。。。或者我需要创建两个单独的应用程序,并使用前端的CORS列表与后端Web应用程序对话吗


我猜我需要使用Express来启动Angular,然后执行构建,而不是在单独的端口上运行Express和Angular?

您可以在同一目录上使用Angular和Express,在Express上使用中间件,因此当您请求时,中间件会识别它是否为“/数据”URL或简单URL,并发送在dist文件夹上生成的索引文件

  • 将app.js移动到Angular app文件夹
  • 插入此代码
    app.use(express.static(path.join(uu dirname,'/dist/'));
    应用程序使用('/data',);
    应用程序使用(功能(请求、恢复){
    res.sendFile(path.join(uu dirname,“/dist/”,“index.html”);
    

    有了这个,Angular和Express可以在localhost:3000上运行。

    我不明白为什么会有人反对,我在寻找完全相同的问题。你知道怎么做吗?你确定它可以在同一个实例上的同一个端口上运行吗?你试过吗?它不在同一个端口上运行,Express使用端口3000,Angular没有不要使用任何端口。部署时,您的CI/CD必须执行angular build并生成静态文件,因此Express将发送它。您是在谈论AngularJS还是angular 8?新angular需要一个端口来运行,并带有命令“ng serve”?我遗漏了什么吗?我是新Angular的新手。在Azure web应用程序上的何处执行此“ng server”命令?Angular 8.ng server仅在您开发时才需要。如果您是本地用户,请运行
    ng build--prod
    ,以构建应用程序,这样您就可以在任何静态文件服务器上部署。但是,如果您已经拥有CI/CD,只需承诺掌握d CI/CD为您做这一切。
         app.use(express.static(path.join(__dirname, '/dist/<your Angular App Name>')));
    
         app.use('/data', <your route file>);
         app.use(function(req, res) {
         res.sendFile(path.join(__dirname, '/dist/<your Angular App Name>', 'index.html'));