在azure vm上执行nodejs(Windows Server 2012)?

时间:2016-09-16 05:58:55

标签: node.js azure windows-server-2012 azure-virtual-machine

我在visual studio中创建了与nodejs的聊天,它在我的localhost上工作得很好,但是我的网站在azure上,所以我创建了虚拟机(Windows Server 2012)。(注意:它不是经典的虚拟机) 并安装必要的软件NodeJS.and将我的nodejsapp文件夹复制到虚拟机中。

此处的代码段(server.js)...

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io').listen(http);
var sql = require('mssql');

var config = {
    user: 'xxxxx',
    password: 'xxxxxxxxxxx',
    server: 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
    database: 'xxxxx',

    options: {
        encrypt: true // Use this if you're on Windows Azure
    }
}
console.log(config); 


io.sockets.on('connection', function(socket){

   socket.on('join room', function (data) {console.log('joined-->'+data.email);
        socket.join(data.email); 
    });

   socket.on('leave room', function (data) {console.log('Leaved-->'+data.email);
        socket.leave(data.email); 
    });

    socket.on('message', function (data) {
            console.log('sent==>'+data.id+"  , "+data.to+'  ,  '+data.from+'  ,  '+data.msg  );
            io.sockets.in(data.to).emit('chat message', {id: data.id, to:data.to,from: data.from, msg: data.msg });

    });    

});

http.listen(5556, function(){
  console.log('listening on *:5556');
});

之后使用命令提示符尝试运行server.js但不运行节点。

enter image description here

它在本地计算机上工作,但不在虚拟机中工作。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

似乎另一个程序在环境路径中有node.exe。在您的情况下,它可能是Microsoft HPC Pack。 键入echo%PATH%并查看(c:\ Program Files \ Microsoft HPC Pack 2008 R2 \ Bin)是否位于node.js文件夹(C:\ Program Files \ nodejs)之前。如果是这样,请更改Path,以便node.js路径位于HPC路径之前。

答案 1 :(得分:0)

您似乎已使用HPC Pack计算节点模板来创建VM实例并构建应用程序。

enter image description here

通过defaule,node是此模板中HPC命令的别名。如果你没有munaully安装它,它没有node.js环境。实际上,您可以使用node.js执行应用程序的绝对路径。

此外,您可以使用正常版本的VM模板,例如 enter image description here

安装node.js并确保在系统PATH中配置nodejs文件夹的路径。否则,您只需将node.js执行应用程序的文件夹打包到项目目录中,然后将它们部署到Azure VM togather。然后使用node.js执行的绝对路径来运行node.js服务器。

更新

在市场中添加新资源时,可以选择不带HPC包的VM模板。 enter image description here