2016-09-18 5 views
1

電子とsocket.ioでnode.jsを使用してチャットアプリケーションを作成しようとしていますが、/socket.io/socket.io.jsをロードしようとすると、私はいつものエラーが表示されます。電子を使用しているときsocket.io.jsファイルを読み込めません

リソースの読み込みに失敗しました:私はちょうどres.sendFileをポート3000でサーバを起動して置けば、ネット:: ERR_FILE_NOT_FOUND

を(__ dirnameは+ "/ index.htmlを"); socket.io.jsをロードすることはできますが、電子を使用してmainWindow.loadURL( "File://" + __ dirname + "/index.html");それは私に上記のエラーを与えます。ここ

は私のindex.jsページのコードです:ここ

const electron = require('electron'); 
const {app, BrowserWindow} = electron; 

app.on('ready', function(){ 
    var mainWindow = new BrowserWindow({ 
    width: 1400, 
    height: 800 
    }); 

    mainWindow.loadURL("File://"+__dirname+"/index.html"); 
    mainWindow.toggleDevTools(); 
}); 

は私のserver.jsページです:

var express = require('express'); 
var app = express(); 
var server = require('http').createServer(app); 
var io = require('socket.io').listen(server); 

users = []; 
connections = []; 

server.listen(process.env.PORT || 3000, "localhost"); 
console.log("Server running..."); 

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

io.sockets.on('connection', function(socket){ 
    connections.push(socket); 
    console.log('Connected: %s sockets connected', connections.length); 

    //Disconect 
    socket.on('disconnect', function(data){ 
    connections.splice(connections.indexOf(socket), 1); 
    console.log('Disconnected: %s sockets connected', connections.length); 
    }); 

    //Send message 
    socket.on('send message', function(data){ 
    console.log("Message Received"); 
    io.sockets.emit('new message', data); 
    }); 
}); 

そして、ここでは私のindex.htmlページです:

<html> 
    <head> 
    <title>Chat Server</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
    <link rel = "stylesheet" href="./style.css"> 
    </head> 
    <body> 
    <div id="chat"></div> 
    <form id="info"> 
     <textarea placeholder="Message" col="50" id="message"></textarea> 
     <input type = "submit" value="Send"></input> 
    </form> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
    <script src="/socket.io/socket.io.js"></script> 
    <script> 
    var socket = io.connect(); 
     $(function(){ 
     var socket = io.connect(); 
     var messageForm = $("#info"); 
     var message = $("#message"); 
     var chat = $("#chat"); 

     messageForm.submit(function(e){ 
      e.preventDefault(); 
      console.log("A message has been submited."); 
      socket.emit('send message', message.val()); 
      message.val(" "); 
     }); 

     socket.on('new message', function(data){ 
      chat.append("<div class='chat-message'><div class='chat-user'>Max Braun</div><div class='chat-text'>"+data+"</div><div class=''>8/30/1999 at 8:33 PM</div></div>"); 
     }); 
     }); 
    </script> 
    </body> 
</html> 
+0

'リソースの読み込みに失敗しました:net :: ERR_FILE_NOT_FOUND'は、どのリソースが読み込みに失敗したのかを示す必要があります。 –

+0

私は同じ問題がありました。最後に、私は 'socket.io-client'を使ってレンダリングプロセスを終了しました。 – Teak

答えて

1

Teakのコメントは正しいです、devlopementモードのsocket ioは、アプリケーションのメインルートにあるapiルート/socket.io/socket.io.jsを公開していますイオンでは、電子でアプリをパッケージ化するともう動作しません。解決策は、ソケットioクライアントライブラリのエントリポイントを変更し、アプリケーションに含めるCDNまたはローカルファイルで置き換えることです。

ので、代わりにこの

<script src="/socket.io/socket.io.js"></script> 

のあなたは、この

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.8/socket.io.min.js"></script> 

を置くことができ、それが役に立てば幸い!

関連する問題