2014-10-02 6 views
0

내 node.js 서버를 통해이 node.js 파일을 표시하려고합니다. 그러나 실제로 실행될 때 콘솔에서 실제로 무엇을 표시하는지보다는 오히려 메모장에있는 것처럼 적절한 형식으로 코드를 표시합니다. 즉, 웹 페이지에 코드를 표시하는 것뿐만 아니라 내 node.js 파일을 실행하고 브라우저에 표시하기를 원합니다.node.js 서버 내에 node.js 파일을 표시 하시겠습니까?

var fs = require('fs'); 
var colour = require('colour'); 
var array = fs.readFileSync('songs/sister_golden_hair.txt').toString().split("\n"); 

var chordsArray =[]; 
var lyricsArray =[]; 
var count1 = 0; 

for(var line in array) { 
    count1++; 
    if (count1 >= 3) {   
     var count2 = 0; 
     lyricsArray[count1-3] = []; 
     chordsArray[count1-3] = []; 
     while (array[line].indexOf("[") != -1) { 
      lyricsArray[count1-3][count2] = array[line].substring(0, array[line].indexOf("[")); 
      array[line] = array[line].substring(array[line].indexOf("[")+1, array[line].length); 
      chordsArray[count1-3][count2] = array[line].substring(0, array[line].indexOf("]")); 
      array[line] = array[line].substring(array[line].indexOf("]")+1, array[line].length); 
      count2++; 
     } 
     if (array[line].length > 0) { 
      lyricsArray[count1-3][count2] = array[line]; 
      chordsArray[count1-3][count2] = ""; 
     } 
    } 
    else { 
     console.log(array[line]); 
    } 
} 

for (var i = 0; i < chordsArray.length; i++) { 
    for (var j = 0; j < chordsArray[i].length; j++) { 
     if (j == 0) { 
      for (var k = 0; k < lyricsArray[i][j].length; k++) {    
       process.stdout.write(" ");         
      }  
      process.stdout.write(chordsArray[i][j].green);      
     } 
     else { 
      for (var k = 0; k < lyricsArray[i][j].length - chordsArray[i][j-1].length; k++) { 
       process.stdout.write(" "); 
      }  
      process.stdout.write(chordsArray[i][j].green);      
     } 
    } 
    console.log(); 
    for (var j = 0; j < lyricsArray[i].length; j++) { 
      process.stdout.write(lyricsArray[i][j].yellow);      
    } 
} 

여기 내가 말하려고 내가 실행하고있는 Node.js를 서버 인 클라이언트가 간다 경우 그에 "http : // 127.0.0.1 /sister_golden_hair.html"다음은 다음은 위의 Node.js를 표시한다 node.js 서버입니다 :

var http = require('http'); 
var fs = require('fs'); 

var counter = 1000; 

function serveStaticFile(res, path, contentType, responseCode){ 
    if(!responseCode) responseCode = 200; 
    fs.readFile(__dirname + path, function(err, data){ 
    if(err){ 
     res.writeHead(200, {'Content-Type': 'text/plain'}); 
     res.end('[' + counter++ + ']: ' + '500 INTERNAL FILE ERROR' + '\n'); 
    } 
    else { 
     res.writeHead(responseCode , {'Content-Type': contentType}); 
     res.end(data); 

    } 
    }); 
} 

http.createServer(function (request,response){ 
    var path = request.url.replace(/\/?(?:\?.*)$/,'').toLowerCase(); 

    //write HTTP header 

    var page = ''; 
    switch(path){ 
    case '/sister_golden_hair.html': 
     serveStaticFile(response, 
         '/Problem4.js', 
         'application/javascript'); 
     break; 
} 
}).listen(3000, "127.0.0.1"); 
console.log('Server Running at http://127.0.0.1:3000 CNTL-C to quit'); 
+0

'application/javascript' 대신'text/javascript' 콘텐츠 유형을 사용해 보셨습니까? – mscdex

+0

@mscdex 예예요. 나는 또한 application/x-javascript를 시도했지만 여전히 다음과 같이 표시합니다. http://i.gyazo.com/ace769d95601d2c49fc951b4a3bfe994.png – user3373360

답변

0

브라우저에서 node.js 코드를 사용하려면 browserify와 같은 것을 사용해야합니다.

+0

나는 우리가 패키지 또는 그런 것들. 이 페이지의 제 II 부로 가면 우리가해야 할 일입니다. http://people.scs.carleton.ca/~ldnel/2406fall2014/assignments/Assignment01/2406fall2014Assignment1.html – user3373360

+1

해당 링크는 비밀번호로 보호되어 있습니다. 행운을 빌어 다시 구현하면 브라우저에서 모든 종류의 node.js 코드를 실행할 수있는 유일한 방법이기 때문에 브라우저를 다시 구현해야합니다. – mscdex

+0

심지어 브라우저 화가 작동하지 않습니다. – user3373360