我在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但不运行节点。
它在本地计算机上工作,但不在虚拟机中工作。
有人能指出我正确的方向吗?
答案 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实例并构建应用程序。
通过defaule,node
是此模板中HPC
命令的别名。如果你没有munaully安装它,它没有node.js环境。实际上,您可以使用node.js执行应用程序的绝对路径。
安装node.js并确保在系统PATH
中配置nodejs文件夹的路径。否则,您只需将node.js执行应用程序的文件夹打包到项目目录中,然后将它们部署到Azure VM togather。然后使用node.js执行的绝对路径来运行node.js服务器。