NodeJS无法在Azure Deployed MEAN-stack web-app中运行

时间:2016-01-10 17:34:21

标签: angularjs node.js azure web-applications mean-stack

刚刚在Azure中部署了My MEAN-stack Web应用程序,除了我的NodeJS / Express服务器外,一切正常。我的角度是发送Http请求,但它们都没有到达名为server.js的NodeJS服务器。此文件处理请求的每个请求都返回404 Not found。 它只适用于我在本地运行nodejs。

当一切都在本地运行时,这个网络应用程序完美地被罚款但现在它似乎无法找到我部署的NodeJS。

我通过VS将整个项目上传到Azure,整个项目含义,我的Angular代码,html代码,ser.js文件和web.config等。 我不知道我应该在我的nodejs中监听哪个端口。当我在本地运行它时,我使用http://localhost:27017作为我的角度流量,并用于侦听我的nodeJS上的端口27017。但是现在它部署在Azure上我假设我不能再使用这个端口了吗?

1 个答案:

答案 0 :(得分:0)

由于在Azure Web Apps服务上运行的Node.js应用程序托管在IISNode上,这使得named pipe可以接收传入的请求,而不是TCP端口。在平台层,Azure Web Apps仅向公众公开80,443端口。

您可以在angular代码中直接将请求网址设置到Node.js应用程序端点。以下是基于express web app template

的信息代码段
/public
 |-angluar.html:

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script src="http://cdn.bootcss.com/angular.js/1.4.0-rc.2/angular.min.js"></script>
    </head>
    <body ng-app="app">
          <div ng-controller="testCtrl">
              {{response}}
          </div>
    </body>
<script type="text/javascript">
    var app = angular.module('app', []);
    app
    .controller('testCtrl', function ($scope, $http) {
        $http.get('http://<your_web_ap_name>.azurewebsites.net/users').then(function (data) {
            $scope.response = data;
        })
    })
</script>
</html>

/routes
 |-user.js:

exports.list = function(req, res){
  res.send("respond with a resource");
};

server.jsapp.use(express.static(path.join(__dirname, 'public')));

浏览网址:http://<your_web_app_name>.azurewebsites.net/angular.html