2013-03-05 2 views
12

이것은 node.js에서 처음입니다. 나는 index.html을 보여 주지만, 사이트 나 다른 어떤 것에도 이미지를 표시하지는 않는다. 기본 html만을 보여준다. 여기에 내가 설정하는 방법이있다. 서버에는 아파치, PHP 또는 다른 것이 없으며 우분투, proftp 및 노드 (컬 및 기타 종속성) 만 있습니다. 나는 노드 파일은/var/nodeFiles의 주요 디렉토리와 HTML/사이트 파일의 디렉토리를 만들어 내 노드 서버 파일에 대한 그래서는/var/nodeFiles/www가 나는 이런 식으로했다 :node.js가있는 html 페이지 표시

var http = require('http'), 
    fs = require('fs'); 
fs.readFile('/var/nodeFiles/www/index.html', function (err, html) { 
    if (err) { 
     throw err; 
    }  
    http.createServer(function(request, response) { 
     response.writeHeader(200, {"Content-Type": "text/html"}); 
     response.write(html); 
     response.end(); 
    }).listen(80); 
}); 

이 작동하지만, index.html 파일과 NOTHING이 첨부되어 있으므로 html 파일에 표시 할 이미지, 효과 또는 아무 것도 표시되지 않습니다. 파일과 디렉토리가 모두 정확합니다. 두 번 확인했는데 폴더의 권한이 맞습니다. 노드가 나머지 사이트를 표시하도록하려면 어떻게해야합니까? 나는 내 자신을 올바르게 설명했으면 좋겠다. 개발 문제를 묻는 곳이라고 들었다. 시간을내어 읽어 주셔서 감사합니다.

+0

전체 복제본 http://stackoverflow.com/questions/6126584/how-to-use-node-js-to-build-pages-that-are-a-mix-between-static-and- dynamic-cont? rq = 1 –

+0

기본적으로 정적 콘텐츠를 제공하는 것입니다. 이전에 게시 된 내용에 대해 많은 질문이있었습니다. –

+0

그는 서버 파일에서 html을 생성 중입니다. 기존 사이트를 가져 와서 fs 라이브러리를 사용하여 표시하려고했습니다. 그런 식으로 다시 쓰는 것이 내가해야하는 일이므로 그렇게하십시오. – user2137087

답변

20

하지만 그것은 단지에 연결된 index.html 파일 아무것도 보여줍니다, 그래서 이미지없고, 효과없이 또는 HTML 파일이 표시되어야합니다 아무것도.

귀하의 프로그램에서 요청이 어떻게 보이는지에 관계없이 브라우저로 돌아 오는 유일한 이유 때문입니다.

당신은 (HTML, JPG, CSS, JS) 또한 여기 https://gist.github.com/hectorcorrea/2573391

에서 가장 일반적인 웹 페이지에 대한 올바른 파일을 반환하는보다 완전한 예제를 좀 걸릴 수 있습니다

는이 블로그에서보세요 내가 노드를 시작하는 방법을 쓴 글. 나는 당신을 위해 몇 가지를 명확하게 해줄 것이라고 생각합니다 : http://hectorcorrea.com/blog/introduction-to-node-js

+2

귀하의 블로그는 매우 도움이되었습니다. PHP에서 노드로 가면 몇 가지 개념을 정리해야합니다. 나는 방금 개종자를 만드는 데 약간의 시간을 보냈던 블로그를 보낸 사람이 몇 명있다. – user2137087

+0

나는 그것을 기쁘게 생각합니다. –

+0

정적 IP가 없다면 AWS에서 어떻게 사용합니까? 'var serverUrl = "127.0.0.1";'및'var serverUrl = "http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com/";는 작동하지 않습니다. –

5

html 서버를 설정하려면이 기본 코드를 확인하십시오. 나를위한 그 일.

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


fs.readFile('./index.html', function (err, html) { 
    if (err) { 
     throw err; 
    }  
    http.createServer(function(request, response) { 
     response.writeHeader(200, {"Content-Type": "text/html"}); 
     response.write(html); 
     response.end(); 
    }).listen(8000); 
}); 

+2

이 디렉토리에'index.html' 만 표시되고 그 외의 파일은 없습니다. –

+0

경로를 모르는 경우 "www.example.com/example/example1"과 같은 URL도 알고 있습니다 – Tripathi29

1

당신의 목표가 단순히 정적 파일을 표시하는 것이라면 Connect 패키지를 사용할 수 있습니다. 나는 몇 가지 성공을 거두었으며 (나 자신도 NodeJS에 대해 처음으로 익숙하다.), 트위터 부트 스트랩 API를 조합하여 사용했다.

당신이 만약 돈 : 파일에

:\> cd <path you wish your server to reside> 
:\> npm install connect 

그런 다음 명령 줄에서

Server.js

마지막으로
var connect = require('connect'), 
    http = require('http'); 
connect() 
    .use(connect.static('<pathyouwishtoserve>')) 
    .use(connect.directory('<pathyouwishtoserve>')) 
    .listen(8080); 

:\>node Server.js 

주의 사항을 (I라는) 감독을 표시하고 싶지 않다. y 내용을 사용하지 않으려면 .use (connect.directory 행.

그래서 "folder"라는 폴더를 index.html 폴더와 bootstrap API 같은 폴더에 만들었습니다. 그런 다음 컴퓨터 IP : 8080에 액세스하면 자동으로 index.html 파일을 사용하게됩니다.

포트 80을 사용하려는 경우 (http : //로 이동하기 때문에 8080 또는 다른 포트를 입력 할 필요가 없습니다).당신은 sudo로 노드를 시작해야 할 것입니다. 보안에 대한 의문은 모르지만, 내부 네트워크 용으로 사용한다면, 개인적으로 큰 문제라고 생각하지 않습니다. 바깥 세상에 드러내는 것도 또 다른 이야기입니다.

업데이트 2014년 1월 28일 :

나는 것들의 내 최신 버전에서 다음을 수행하므로 작동하지 않는 경우, 상기 제처럼 그것을 밖으로 시도 없었어요 (당신은 읽기 불평하는 오류는 노드를 찾을 수 없습니다.), 계속 진행하고 가능하면 아래를 시도하십시오. 우분투에서 실행할 때

최종 업데이트

또한 나는 nodejs를 "이름 바꾸기"할 때의 별명 또는 무언가를 사용하여 (NPM과) 이름으로 nodejs를 사용하여 문제이 문제가 발생하는 경우, 내가 추천에 달렸다 노드로.

:\>gedit /usr/local/bin/node 
#!/bin/bash 
exec /nodejs "[email protected]" 

sudo chmod -x /usr/local/bin/node 

노드라는 새로운 파일을 만듭니다 즉

+0

내 브라우저에서 Can not GET /이라는 오류가 발생합니다. 아이디어? –

+0

또한 static으로 '../'을 설정하면 undefined가 함수가 아니라는 오류가 발생합니다. –

+0

이것이 패키지의 업데이트로 인한 것 같아요, 간단한 예제가 연결 업데이트 후에 저를 위해 일하는 것을 멈췄습니다 .... 나는 최신 버전이 사용하는 것을 보려고 일부 파기를해야 할 것입니다. 하지만 지금은 github에 대한 예제가 보이지 않습니다.) * 길게 짧게, 도구의 어떤 버전을 사용하고 있습니까? 대답을 유도 할 것입니다. – onaclov2000

5

이를

node Server.js 

일을 잘하게한다고 :

명령은 내가 (좋든 나쁘 든) 사용 나를 위해 속임수를했다 :

var express = require('express'), 
app = express(); 
app.use('/', express.static(__dirname + '/')); 
app.listen(8080);