node.js - node项目找不到文件,index.js输出index.html
PHP中文网
PHP中文网 2017-04-17 14:51:25
0
1
520

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function(req, res){
    res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
    console.log('a user connected');
});

http.listen(80, function() {
    console.log('listening on *:80');
});

这是index.js源码,
然后访问localhost


jquery找不到,socket.io.js倒是找到了。。。。
这是index.html引入部分

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(1)
Ty80

ご質問は理解しましたが、2 つの質問があります

  • なぜ /socket.io/socket.io.js が見つかるのでしょうか? これは、Socket.io サービスが http サービスをリッスンしているためです。 、ルート http://localhost:<port>/socket.io/socket.io.js が自動的に提供されます (実際にはすべての /socket.io リクエストをインターセプトします)から始まり、リクエストされた socket.io.jssocket.io-client/socket.io.js に解析されるため、フロントエンドによって取得された js を確認できます。 , 実際には、これは socket.io モジュールではなく、socket.io-client モジュール内のファイルです)。外部の静的ファイル ディレクトリにコピーしたり、このサービスを手動で提供したりする必要はありません。

  • 独自の /js/jquery-2.0.3.min.js が見つからないのはなぜですか? この静的ファイル サービスではモジュールが提供されないため、自分で行う 手動で提供し、上記の index.js コードをわずかに変更すると、結果は次のようになります。

  • //変更して、Express を提案します
    var Express = require('express')
    var app = Express();
    var http = require('http').Server(app);
    var io = require('socket.io')(http);
    
    // `jquery-2.0.3.min.js` ファイルが見つかるように静的ファイル サービスを提供します
    app.use(express.static(__dirname));
    
    app.get('/', function(req, res){
        res.sendFile(__dirname + '/index.html');
    });
    
    io.on('接続', function(ソケット){
        console.log('ユーザーが接続しました');
    });
    
    // ポート 80 で直接リッスンしないことをお勧めします。ポート 8888 に変更します。
    http.listen(8888, function() {
        console.log('*:8888 でリッスンしています');
    });
    
    • 注: 80 ポートで直接リッスンしないことをお勧めします。他のポートでリッスンして、nginx をハングアップすることもできます。リバース プロキシの場合、このアプローチはより穏やかかもしれません。 ポート 80 を直接監視するのは暴力的すぎます。個人的な意見ですが、参考になれば幸いです。

    いいねを押す +0
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート