以下のクライアントコードでは、index.jsおよびindex.htmlと同じディレクトリにあるイメージ(space.jpg)を表示しようとしています。サーバーにアクセスしてindex.htmlを提供すると、画像に壊れたリンクが表示されています。私がここで考慮していない静的なHTMLを提供しているときに、Nodeのネイティブファイル構造について何かありますか?NodeJSを使用したファイルパスの問題
OS X(10.10.5)のローカル環境でテストしています。
I持って、次のサーバコード(index.js):
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendfile('index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
socket.on('chat message', function(msg){
console.log('message: ' + msg);
io.emit('chat message', msg);
});
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
そして、次のクライアントコード(index.htmlを):
ブラウザがspace.jpg
を要求しようとしたときためです
<!doctype html>
<html>
<head>
<title>Infinium</title>
<style>
</style>
</head>
<body>
<div id="chat" style="background-color:rgba(0,0,0,0.7);width:500px;top:0px;left:0px;position:absolute;">
<div style="width:500px;px;height:100px;overflow-y:auto;color:#FFFFFF" id="messages"></div>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
</div>
<img src="space.jpg">
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
var element = document.getElementById("messages");
element.scrollTop = element.scrollHeight;
});
</script>
</body>
</html>
コンソールログにエラーメッセージが記録されましたか?それは何を言いますか? –
エクスプレスサーバーが画像ファイルを提供しないという問題がありますか?質問からチャットクライアントコードをすべて削除してください。それは無駄な混乱です。フォーカス。 – Tomalak
@EliezerWohlありがとうございます。GET http:// localhost:3000/space.jpg 404(見つからない) – nicktendo