node.js오류 다시 올립니다 ㅜㅜ 이미지깨짐으로인해
본문
여기다 질문해도 되는지 모르겠지만.. 그래도 여기는 유능한 분들이 많아서.. 올려 보겠습니다.
var fs = require('fs');
var Metrics = require('./metrics');
var ProductionConfig = require('./productionconfig');
var _ = require('underscore');
function main(config) {
var Log = require('log');
switch(config.debug_level) {
case "error":
log = new Log(Log.ERROR); break;
case "debug":
log = new Log(Log.DEBUG); break;
case "info":
log = new Log(Log.INFO); break;
};
var production_config = new ProductionConfig(config);
if(production_config.inProduction()) {
_.extend(config, production_config.getProductionSettings());
}
var ws = require("./ws");
var WorldServer = require("./worldserver");
var server = new ws.WebsocketServer(config.port, config.use_one_port, config.ip);
var metrics = config.metrics_enabled ? new Metrics(config) : null;
var worlds = [];
var lastTotalPlayers = 0;
var DatabaseSelector = require("./databaseselector");
var checkPopulationInterval = setInterval(function() {
if(metrics && metrics.isReady) {
metrics.updateWorldCount();
metrics.getTotalPlayers(function(totalPlayers) {
if(totalPlayers !== lastTotalPlayers) {
lastTotalPlayers = totalPlayers;
_.each(worlds, function(world) {
world.updatePopulation(totalPlayers);
});
}
});
}
}, 1000);
log.info("Starting BrowserQuest game server...");
var selector = DatabaseSelector(config);
databaseHandler = new selector(config);
server.onConnect(function(connection) {
var world; // the one in which the player will be spawned
var connect = function() {
if(world) {
world.connect_callback(new Player(connection, world, databaseHandler));
}
};
if(metrics) {
metrics.getOpenWorldCount(function(open_world_count) {
// choose the least populated world among open worlds
world = _.min(_.first(worlds, open_world_count), function(w) { return w.playerCount; });
connect();
});
}
else {
// simply fill each world sequentially until they are full
world = _.find(worlds, function(world) {
return world.playerCount < config.nb_players_per_world;
});
world.updatePopulation();
connect();
}
});
server.onError(function() {
log.error(Array.prototype.join.call(arguments, ", "));
});
var onPopulationChange = function() {
metrics.updatePlayerCounters(worlds, function(totalPlayers) {
_.each(worlds, function(world) {
world.updatePopulation(totalPlayers);
});
});
metrics.updateWorldDistribution(getWorldDistribution(worlds));
};
_.each(_.range(config.nb_worlds), function(i) {
var world = new WorldServer('world'+ (i+1), config.nb_players_per_world, server, databaseHandler);
world.run(config.map_filepath);
worlds.push(world);
if(metrics) {
world.onPlayerAdded(onPopulationChange);
world.onPlayerRemoved(onPopulationChange);
}
});
server.onRequestStatus(function() {
return JSON.stringify(getWorldDistribution(worlds));
});
if(config.metrics_enabled) {
metrics.ready(function() {
onPopulationChange(); // initialize all counters to 0 when the server starts
});
}
process.on('uncaughtException', function (e) {
// Display the full error stack, to aid debugging
log.error('uncaughtException: ' + e.stack);
});
}
function getWorldDistribution(worlds) {
var distribution = [];
_.each(worlds, function(world) {
distribution.push(world.playerCount);
});
return distribution;
}
function getConfigFile(path, callback) {
fs.readFile(path, 'utf8', function(err, json_string) {
if(err) {
console.info("This server can be customized by creating a configuration file named: " + err.path);
callback(null);
} else {
callback(JSON.parse(json_string));
}
});
}
var defaultConfigPath = './server/config.json';
var customConfigPath = './server/config_local.json';
process.argv.forEach(function (val, index, array) {
if(index === 2) {
customConfigPath = val;
}
});
getConfigFile(defaultConfigPath, function(defaultConfig) {
getConfigFile(customConfigPath, function(localConfig) {
if(localConfig) {
main(localConfig);
} else if(defaultConfig) {
main(defaultConfig);
} else {
console.error("Server cannot start without any configuration file.");
process.exit(1);
}
});
});
답변 9
npm install or update라고 치는 것이 아니고..
npm install 해보시던지..
아니면 npm update 둘중에 하나만 하라는 이야기입니다.
노드 책을 보시고 시작하라고 권하고 싶네요..
메시지가
configuration file없이는 실행할수가 없다고 하니..
var defaultConfigPath = './server/config.json' ; |
| var customConfigPath = './server/config_local.json' ; |
2가지 파일이 있는지 체크 해보세요..
path는 풀 path 보다는 그냥 모든 파일이 있는 곳에서 실행하는 것으로 해보세요..
node js/main.js 식으로..
현디렉토리안에 모든 구성이 있어야 겠죠..
물론 server 디렉토리안에 위의 json파일 2개가 있어야 겠죠..
모든 파일이 user/pc 디렉토리 아래에 있나요?
c:/user/pc>dir
[server]
...
식으로..
참고로 말씀드리면 http://uwooto.blogspot.kr/2014/09/nodejs-broswer-quest-windows.html
여기나와 있는 설치법대로 하였으며 틀리게 한부분이 있다면
log bison websocket websocket-server sanitizer memcache 이모듈들은 설치가 안되있습니다.
underscore 이것만 설치 했고 다른건 설치오류가 나와 설치하지 못했습니다.
모든 파일이 d 디렉토리 밑에 있네요..
cd /users/pc/d
npm install or npm update 하시고
node server 해보세요
이렇게 나오네요;;
그리고 마지막 혹시몰라 node server/js/main.js 실행까지 해봤지만.. 이렇게 나와요 ㅜㅜ
npm install bcrypt 하시면 되고요..
없다고 하는 모듈은 대부분 위와 같은 형식으로 설치하시면 됩니다.
대부분의 연관된 파일은 packages.json에 들어가 있습니다. (없다면 여기다 추가)