2012-03-21 5 views
3

여기에 무슨 일이 잘못되는지 이해가 안됩니다.express.js가 내 이미지를 제공하지 않습니다

디렉토리 구조 :

app/server.js 
app/public/index.html 
app/public/js/main.js 
app/public/img/car.png 

server.js

var fs = require('fs') ,express = require('express'), 
app = express.createServer(); 

app.use(express.static(__dirname + "/public")); 

app.get('/', function(req, res){ 
    fs.readFile(__dirname + '/public/index.html', 'utf8', function(err, text){ 
     res.send(text); 
    }); 
}); 

app.listen(8080, function(){ 
    console.log('Server listening on %d', app.address().port); 
}); 

main.js

var marker = new google.maps.Marker({ 
     map:map, 
     position:coords, 
     icon: 'img/car.png' 
    }); 

erroroutput :

,314,854,149,

내 모든 css 파일과 js 파일이 문제없이로드됩니다. 내가 뭘 잘못하고 있니?

UPDATE 이 파일이 창에 검색 할 때 을 car.png.png 명명 된 때문, fileextensions 그래서 나는 이름이 정말 레슨 학습을 car.png 한 생각으로 바보짓을했다 볼 수 없었다!

+0

로컬로이 테스트를하고 있습니까? StackOverflow에서 유사한 질문을 한 눈에 보면 일부 클라우드 공급자가 문제를 일으킬 수 있음을 나타냅니다. http://stackoverflow.com/questions/7506797/static-image-file-is-invisible-in-node-js-express –

+0

예, 동일한 결과로 로컬 및 노드 킷 모두에서 테스트되었습니다. –

+0

@DavidEllis : 다른 증상이 있습니다 (404 아님). –

답변

12

변경이

app.use('/public', express.static(__dirname + "/public")); 
+2

요청 응답에 동기화 기능을 사용하지 마십시오. 앱 설치 중에 만 사용해야합니다. 대신에'fs.createReadStream (file) .pipe (res)'를 사용하십시오. – fent

+0

@DeaDEnD 괜찮습니다. 그러나 첫 번째 부분은 해결책이기 때문에 답을 적어 두지 마십시오.나는이 문제를 발견하기 전에 내가 똑같은 문제를 문자 그대로 분을 해결했기 때문에 그것이라는 것을 안다. kthnxbi –

+0

@runexec :'fs.readFileSync' 추천이 좋지 않아서 당신을 낙심 시켰습니다. 그리고 아니, 그것은 OP를위한 해결책이 아니 었습니다. 파일 이름이'car.png.png'로 밝혀졌습니다. –

0

으로

app.use(express.static(__dirname + "/public")); 

절대 경로 사용해보십시오이 라인 - /img/car.png을

관련 문제