2013-04-03 1 views
-1

Я сделал документ дизайн CouchDB, который отлично работает по следующей ссылке http://localhost:5984/db/_design/app/index.html Теперь проблема я пытаюсь извлечь содержимое страницы и отображать его от узла JS, но только страницы HTML отображается связанный css и js-файлы не работают, и когда я попытался сузить проблему, я обнаружил, что файлы css и js предполагают наличие учетных данных для входа в couchdb и не связаны. Я даже попытался добавить заголовок auth в параметр ответа, но все-таки не повезлоnodejs couchapp не связывает CSS файл

var http = require('http'); 

var json; 
var root = new Buffer("admin:pass").toString('base64'); 
http.createServer(function(req, res) { 
res.setHeader('Authorization', root); 
res.writeHead(200, { 'Content-Type':'text/html' }); 
couchPage(); 
res.end(json); 
}).listen(8080); 

function couchPage() { 
var options = { 
    hostname: 'localhost', 
    port: 5984, 
    path: '/db/_design/app/index.html', 
    auth: 'admin:pass', 
    method: 'GET' 
}; 

var req = http.request(options, function(res) { 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
     json = chunk; 
    }); 
}); 

req.end(); 
} 

может любой, пожалуйста, руководство меня, где я не прав

ответ

0

Я думаю, что это не имеет никакого отношения к авторизации couchdb. Проблема в том, что вы не выполняете маршрутизацию на вашем сервере nodejs. То есть браузер делает запрос на localhost: 8080 и получает содержимое /db/_design/app/index.html в качестве ответа. Теперь браузер обнаруживает ссылку на таблицу стилей, например «style.css». Он выполняет запрос на localhost: 8080/style.css, но ваш сервер nodejs просто игнорирует часть запроса «style.css». Вместо этого клиент снова получит содержимое /db/_design/app/index.html!

Если вы хотите обслуживать вложения вашего документа проекта через nodejs, сначала необходимо разобрать запрос, а затем извлечь соответствующий документ из couchdb. Однако я не думаю, что вы действительно хотите это сделать. Либо вы хотите использовать couchdb традиционным способом за nodejs (не напрямую доступным из клиента), а затем вы просто будете использовать его в качестве базы данных с вашими html (или шаблонами) файлами, хранящимися на диске. Или вы хотите напрямую разоблачить couchdb для клиента и заставить nodejs прослушивать события через канал couchdb _changes.

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