zu implementieren Ich bin ziemlich neu in all diesen Technologien (einschließlich etwas JavaScript), so dass Sie hier mit mir ertragen müssen.Anwendung Fehler beim Versuch, Node.js/Express/Socket.io-Anwendung auf Heroku
Ich folgte dem ChatApp Tutorial über Socket.IO Docs ziemlich genau und änderte die Anwendung nach meinen Vorstellungen etwas; Ich glaube jedoch nicht, dass ich mich auf Seiten der Serverinteraktion und anderer Dinge sehr verändert habe. Mein Problem ist, egal was ich tue, ich kann meine Bewerbung nicht erfolgreich auf Heroku laufen lassen. Ich erhalte diese Fehlermeldung beim Versuch, die App zu laden:
Anwendungsfehler Ein Fehler in der Anwendung aufgetreten und Ihre Seite nicht bedient werden kann. Bitte versuchen Sie es in einigen Augenblicken erneut. Wenn Sie der Besitzer der Anwendung sind, überprüfen Sie Ihre Protokolle für Details.
Ich bin mir nicht sicher, ob mir etwas offensichtlich fehlt oder was.
Hier ist meine Haupt index.js Datei:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendfile('index.html');
});
app.use("/css", express.static(__dirname + '/css'));
//array of users currently in chat
var people = {};
io.on('connection', function(socket){
console.log('user connected!');
socket.on('join', function(name){
people[socket.id] = name; //create entry in 'people' with new user
socket.emit("update", "You have connected to the server.");
io.sockets.emit("update", name + " has joined the server.");
io.sockets.emit("update_people_list", people);
});
socket.on('disconnect', function(){
console.log('user disconnected!');
if(people[socket.id] != ""){
io.sockets.emit("update", people[socket.id] + " has left the server.");
delete people[socket.id];
io.sockets.emit("update_people_list", people);
}
});
socket.on('chat message', function(msg){
console.log('message: ' + msg);
io.sockets.emit('chat message', people[socket.id], msg);
});
});
// http.listen(3000, function(){
// console.log('listening on *:3000');
// });
index.html
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery.js"></script>
<script>
$(document).ready(function(){
var ready = false;
var socket = io.connect();
$("#chat").hide();
$(".canvasDiv").hide();
$("#name").focus();
//prevent form from being submitted without name
$("form").submit(function(event){
event.preventDefault();
});
//allows entering by hitting 'Enter' for name
$("#name").keypress(function(e){
if(e.which == 13) { //if ENTER key
var name = $("#name").val();
if(name != ""){
socket.emit("join", name);
$("#login").detach();
$("#chat").show();
$("#msg").focus();
ready = true;
}
}
});
$('#chatform').submit(function(){ //when submit chat message
socket.emit('chat message', $('#msg').val()); //emit message + value of input
$('#msg').val(''); //empty field?
return false; //so that the page doesn't refresh
});
//SOCKET LISTENING
socket.on('chat message', function(user, msg){
if(ready){
$('#messages').append("<p><strong><span class='chat-user'>" + htmlEntities(user) + " </span></strong>: " + htmlEntities(msg) + "</p>");
//adjust height and scroll as need be:
var $container = $('#messages');
var height = $container.get(0).scrollHeight;
$container.scrollTop(height);
}
});
socket.on("update", function(io_message){
if(ready){
$('#messages').append("<p class='notification'>" + htmlEntities(io_message) + "</p>")
}
});
socket.on("update_people_list", function(people){
if(ready){
$("#people").empty(); //clear to refresh it
$.each(people, function(client_id, name){
$('#people').append("<p class='notification'>" + htmlEntities(name) + "</p>");
});
var $container = $("#messages");
var height = $container.get(0).scrollHeight;
$container.scrollTop(height);
}
});
});
</script>
Zusätzlich meine package.json Datei
{
"name": "socket-chat-example",
"version": "0.0.1",
"description": "my first socket.io app",
"dependencies": {
"express": "^4.6.1",
"socket.io": "^1.0.6"
}
}
procfile:
web: node index.js
.gitignore:
node_modules/
Das ist mein Problem gelöst. Vielen Dank. –
'Heroku Logs' haben mir geholfen, herauszufinden, dass Express in devDependencies und nicht in Abhängigkeiten installiert wurde. Ich habe es in Abhängigkeiten installiert und es hat funktioniert! Vielen Dank! – Siddharth