#javascript #node.js #socket.io #requirejs #socket.io-1.0
#javascript #node.js #socket.io #требуется js #socket.io-1.0
Вопрос:
Может кто-нибудь объяснить мне, почему это работает:
<script src="//cdn.socket.io/socket.io-1.0.4.js"></script>
<script>
var socket = io('http://nodeapp.herokuapp.com');
console.log(socket);
</script>
но это не работает:
<script async src="//cdn.socket.io/socket.io-1.0.4.js"></script>
<script>
var socket = io('http://nodeapp.herokuapp.com');
console.log(socket);
</script>
Ошибка:
Uncaught ReferenceError: io is not defined
Или как я могу добавить сокет.библиотека ввода-вывода на стороне клиента с require.js и это в данном случае работает нормально (без ошибок выше).
Ответ №1:
<script async ...
Вы явно просите браузер не ждать, пока он не получит скрипты.
Таким образом, он не ждет, пока скрипт будет извлечен и выполнен, прежде чем перейти к следующему сценарию. И, следовательно io
, еще не определен, когда вы переходите к
var socket = io('http://nodeapp.herokuapp.com');
Комментарии:
1. Если я позже в консоли попытаюсь подключиться, ошибка все еще существует.
2. Реальный вопрос в том, почему socket.io (1.0.x) загружается с require.js не доступен по всему миру? С версией 0.9 все работает нормально…