Сервер узла, Socket.io ‘io не определен’?

Я выполнил те же самые действия, которые всегда выполнялись для меня, создавали приложение через express, размещали зависимости модуля в папке node_modules. Похоже, что файл javascript на стороне клиента socket.io не найден.

(Я рассмотрел исправления других людей, которые include файл JavaScript на вкладке сценария. Мне не приходилось делать это для моих предыдущих проектов node + socket.io).

JavaScript на клиенте:

var socket = io.connect('http://localhost'); 

JavaScript на сервере:

 var io = require('socket.io').listen(app); 

папка node_modules:

 socket.io, which has an internal node_modules folder containing socket.io-client 

Сообщение об ошибке:

 Uncaught ReferenceError: io is not defined (anonymous function) 

Когда я включаю клиент socket.io вручную: http://cdn.socket.io/stable/socket.io.js

Я получаю другую ошибку, которая:

 Uncaught TypeError: Object # has no method 'connect' (anonymous function) 

На клиенте вы сделали:

  

перед установкой переменной socket ?

Мне удалось промахнуться через это, и растратил около часа, на что-то, что оказалось очень простой ошибкой.

Когда функция не определена? Например, «Uncaught ReferenceError: io не определен». Не означает ли это, что функция «используется» до того, как она «создана»?

В части моего HTML-файла, который «вызывает» файлы javaScript, он выглядит так:

    

и я изменил его на это

     

Итак, теперь элемент «io», будь то объект или функция … На самом деле создается, пока он не используется: D

Повеселись!

Node.js новичок здесь! Я уверен, что на это был дан ответ. Тем не менее я продолжал искать проблемы с src для сокета. По-видимому, это: не работал для меня на стороне клиента.

Я заменил вышеприведенную строку этим и, похоже, работает нормально.

  

(Edit: хотя это очевидно, эта ссылка может не работать в зависимости от того, когда вы читаете этот ответ. Выберите последнюю ссылку: https://cdnjs.com/libraries/socket.io )

Вот рабочий код на стороне клиента:

     

На стороне сервера (обрабатывается только 1 сокет)

 var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var port = process.env.PORT || 8080; app.get('/', function(req, res){ console.log("app works"); }); io.on('connection', function(socket){ socket.emit('notification', {message:"hi"}); }); http.listen(port, function(){ console.log('listening on :' + port); }); 

На клиенте:

    

введите описание изображения здесь

введите описание изображения здесь

  1. Использовать server.listen () можно исправить;