2013-02-19 1 views
1

Я управляю одним видом клиентского запроса, начиная с '/ js /', что означает корневую папку на стороне сервера или, возможно, будет находиться в '/ public/js /' для дальнейшего использования. Хорошо, проблема, я получил это сообщение:Запрос запроса клиента ответа NodeJs другому

//server side 
GET /js/socket.io/socket.io.js 304 7ms 

// client side 
Uncaught ReferenceError: require is not defined  
Uncaught ReferenceError: io is not defined 

[х] источник

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

// app.js 
app.get('/js/*', function (req, res) { 
    res.sendfile(__dirname + req.url.substr('/js'.length)); 
}); 

Но это работает, когда я меняю фиксированному пути.

[о] Источник

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

// app.js 
app.get('/socket.io/socket.io.js', function (req, res) { 
    res.sendfile(__dirname + '/socket.io/socket.io.js'); 
}); 

Это своего рода странно, не так ли? Может ли кто-нибудь выяснить, где это неправильно?

Большое спасибо.

ответ

0

Какова ваша конкретная проблема с этим ответом?

304 код состояния означает Not modified, а это означает, что ваш браузер может использоваться в кэше версии /js/socket.io/socket.io.js вместо сервера, чтобы отправить его в браузер снова (таким образом, экономя пропускную способность).

+0

появляется ошибка в стороне клиента заключается в следующий: неперехваченного ReferenceError: требуют не определен неперехваченного ReferenceError: ИО не определен но у успешного случая нет проблемы. – Kevin

+2

Похоже, вы пытаетесь использовать серверную версию 'socket.io.js' в клиенте. 'socket.io' устанавливает собственный обработчик для'/socket.io/socket.io.js', поэтому вам не нужно создавать обработчик для этого кода на стороне сервера (см. http://socket.io/# как использовать) – robertklep

+0

Спасибо, я удалил этот обработчик и работает. Но мне все еще любопытно, что первый случай действительно отправляет файл, расположенный в /socket.io/socket.io.js на стороне сервера. Это означает, что это так же, как и второй случай, не так ли? – Kevin

0

Если вам требуется socket.io в приложении, он устанавливает обработчик для перехвата запросов для /socket.io/socket.io.js (source). Вот почему работает второй пример.

В самом деле, вы можете удалить эти строки в app.js:

app.get('/socket.io/socket.io.js', function (req, res) { 
    res.sendfile(__dirname + '/socket.io/socket.io.js'); 
}); 
+0

Спасибо, но правильный ответ относится к первой статье, хотя ваш путь правильный. Надеюсь, вы не против. – Kevin

Смежные вопросы