刚刚在Azure中部署了我的MEAN堆栈web应用程序,除了我的NodeJS/Express服务器之外,其他一切都正常工作。我的angular正在发送Http请求,但没有一个到达我的名为server.js
的NodeJS服务器。这个文件也没有处理请求。每个请求都返回404未找到。只有当我在本地运行nodejs时,它才有效。
当一切都在本地运行时,这个web应用程序运行得很好,但现在它似乎找不到我部署的NodeJS。
我通过VS将整个项目上传到Azure,整个项目的含义,我的Angular代码,html代码,ser.js文件和web.config等。我不知道我应该在nodejs中监听哪个端口。当我在本地运行它时,我使用http://localhost:27017用于我的角流量,并用于在我的nodeJS上的端口27017上侦听。但现在它已经部署在Azure上了,我想我不能再使用这个端口了?
作为运行在Azure Web Apps Service上的Node.js应用程序,托管在IISNode上,IISNode提供了一个named pipe
来接收传入请求,而不是TCP端口。在平台层,Azure Web App只向公众公开80443端口。
您可以在angular
代码中直接将请求url设置为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.js
:app.use(express.static(path.join(__dirname, 'public')));
浏览网址:http://<your_web_app_name>.azurewebsites.net/angular.html