express.js不服务我的形象

Sor*_*ami 4 google-maps-markers node.js express

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

目录结构:

app/server.js
app/public/index.html
app/public/js/main.js
app/public/img/car.png 
Run Code Online (Sandbox Code Playgroud)

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);  
});
Run Code Online (Sandbox Code Playgroud)

main.js

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

ERROROUTPUT:

Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:8080/img/car.png 
Run Code Online (Sandbox Code Playgroud)

我的所有css文件和js文件加载没有问题.我究竟做错了什么?

更新 这是由于文件被命名为car.png.png在Windows中浏览时,文件扩展不可见所以我被骗以为这个名字真的是car.png经验教训!

小智 14

改变这一行

app.use(express.static(__dirname + "/public"));
Run Code Online (Sandbox Code Playgroud)

对此

app.use('/public', express.static(__dirname + "/public"));
Run Code Online (Sandbox Code Playgroud)

  • 请勿使用同步功能进行请求响应.它们应该只在应用程序设置期间使用.请改用`fs.createReadStream(file).pipe(res)` (2认同)