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
。