Node.js express.js不符合我的形象

Node.js express.js不符合我的形象,node.js,express,google-maps-markers,Node.js,Express,Google Maps Markers,我不明白这里出了什么问题 目录结构: 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.

我不明白这里出了什么问题

目录结构:

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'
    });
错误输出:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8080/img/car.png 
我所有的css文件和js文件加载都没有问题。 我做错了什么

更新 这是因为文件名为car.png.png 在windows中浏览时,文件扩展名不可见,所以我被愚弄,以为它的名字真的是car.png 吸取教训

更改此行

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

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

尝试使用绝对路径-/img/car.png

您是否在本地进行测试?对StackOverflow中类似问题的浏览表明,一些云提供商可能把事情搞砸了:是的,在本地和nodejitsu上进行了测试,结果都是一样的。@DavidEllis:那里的症状不同(不是404)。您是否尝试过手动打开
.png
?我刚刚意识到,可能是谷歌的服务器看不到你的图像,它返回的错误消息是错误的(不应该是404,应该是a不能连接到服务器)。值得一提的是:将一个带有src'img/car.png'的img标记与一个404标记放在一起也会崩溃。不要对请求和响应使用同步功能。它们只能在应用程序安装期间使用。使用fs.createReadStream(file.pipe(res)@DeaDEnD这很好,但不要否决我的答案,因为第一部分是解决方案。我知道这是因为在我发现这个问题之前,我已经解决了同样的问题。kthnxbi@runexec:我否决了你,因为推荐
fs.readFileSync
不好。不,这不是OP的解决方案——原来文件名为
car.png.png