node.js오류 다시 올립니다 ㅜㅜ 이미지깨짐으로인해

node.js오류 다시 올립니다 ㅜㅜ 이미지깨짐으로인해

QA

node.js오류 다시 올립니다 ㅜㅜ 이미지깨짐으로인해

본문

여기다 질문해도 되는지 모르겠지만.. 그래도 여기는 유능한 분들이 많아서.. 올려 보겠습니다.

 

 

0b226c8d5ee356a631f68b5cefb494d3_1449723116_1391.png

이런 오류가 나오네요..
대충 파일을 읽을수 없다는거 같은데.. 파일 명은 config.json 과 config_local.json-dist 입니다.. config_local.json-dist같은경우 config_local.json로 변경후 해봐도 그대로네요 ㅜㅜ 
참고로 설치 중인 건broswer quset 라는 게임입니다. 모듈 설치를 따로 또해야되는게 있는건지 아니면
다른 설정을 해야되는건지.. 알려주세요


참고로 main.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]

...

 

식으로..

 

그냥 node server 로 하면 동작될 것 같은데요..

74903bde6de9fff919f5409208dae59f_1449796696_6513.png

 

참고로 말씀드리면 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 해보세요

 

npm install bcrypt 하시면 되고요..

 

없다고 하는 모듈은 대부분 위와 같은 형식으로 설치하시면 됩니다.

 

대부분의 연관된 파일은 packages.json에 들어가 있습니다. (없다면 여기다 추가)

답변을 작성하시기 전에 로그인 해주세요.
전체 95
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT