私はnode.jsを学習しています。これは一般的なチャットアプリケーションの例から始まります。私はすべてうまく動作しているが、index.htmlファイル内のすべてのJavaScriptインラインを実行する代わりに、app.js.という名前のファイルに入れたいしかし、一度これを行うと、ファイルに404が見つかりません。私はsrcのパスで遊んでみようとしていますが、ファイルを見つけることができません。それはノードのアプリのカスタムjs/cssファイルを参照するトリックはありますか?node.js Webアプリケーションのカスタムjavascriptファイルを参照しています
Index.htmlと
<div id="chat"></div>
<form id="send-message">
<input type="text" id="message" />
<input type="submit" />
</form>
<script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src="/app.js"></script>
<script>
</script>
server.js
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
var path = require('path');
app.use(express.static(path.join(__dirname, 'app.js')));
server.listen(process.env.port || 3000);
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.on('send message', function (message) {
console.log(message);
io.sockets.emit('new message', message);
});
});
app.js
$(document).ready(function() {
var socket = io.connect();
var form = $('#send-message');
var message = $('#message');
var chat = $('#chat');
form.submit(function (e) {
e.preventDefault();
socket.emit('send message', message.val());
message.val('');
});
socket.on('new message', function (data) {
chat.append(data + "<br />");
});
});
私はノードの概念を把握する上でハングアップれるかもしれませんが、私は私が実際以内に何もする必要はありませんと仮定していますserver.js自体はサーバーサイドのコードなので、サーバー側ではdom操作をしてはいけません。通常のWebアプリケーションと同じように、カスタムjsファイルを追加するのは正しい方法ではないようです。ほとんどのチュートリアルやドキュメントでは、jqueryやブートストラップなどのライブラリを、モジュールとして、またはローカルディレクトリに入れるのではなく、cdn urlを呼び出すことで参照しています。これと404エラーに基づいて、Webアプリケーション内のローカルファイルへの外部js参照を含める別の方法があると仮定しています。
フィドラー出力:
GET http://localhost:1337/app.js HTTP/1.1
Host: localhost:1337
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Accept: */*
Referer: http://localhost:1337/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: __utma=111872281.1352628776.1455330937.1455330937.1455330937.1; __utmz=111872281.1455330937.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
ok。私はこれを手伝っている。私はこれも他の場所に掲載されているのを見ましたが、なぜこれをサーバー側に含める必要があるのか理解できません。私は後でそれを理解するでしょう。しかし、私は 'path is undefined 'を取得しています。' path'変数はどこに定義されていますか? – mwilson
'path'はNode Coreモジュールです。あなたはただそれを要求することができます。私の更新された答えを見てください。 – peteb
OK。ありがとう。私はまだ404エラーを取得しています。私は更新されたコードをserver.jsに含めました。 – mwilson