2013-06-16 3 views
0

У меня есть приложение Node, где я хочу использовать socket.io для передачи данных клиенту, где он отображается с помощью smoothie. У меня установлены оба пакета (через NPM) в двух разных средах узлов и в обоих случаях в подкаталоге node_modules моего проекта. Одной из сред является BeagleBone Black, а другая - среда Cloud9 IDE. В обоих случаях модуль socket.io решает и работает отлично, но никакая комбинация имен путей не получает модуль сглаживания (который я могу получить, если я просто вытащил его из GitHub напрямую).Узел не разрешает клиентский модуль

Вот соответствующие биты на стороне сервера код для Cloud9 IDE:

var app = require('http').createServer(handler) 
    , io = require('socket.io').listen(app) 
    , fs = require('fs') 

app.listen(process.env.PORT, process.env.IP); 

function handler (req, res) { 
    fs.readFile(__dirname + '/NotWorking.html', 
    function (err, data) { 
    if (err) { 
     res.writeHead(500); 
     return res.end('Error loading index.html'); 
    } 
    res.writeHead(200); 
    res.end(data); 
    }); 
} 
. 
. 
. 

Здесь находятся соответствующие биты со стороны клиента:

<!DOCTYPE html> 
<html> 
<head> 
    <script src="smoothie/smoothie.js"></script> 
    <script src="socket.io/socket.io.js"></script> 
    <script> 
    var line1 = new TimeSeries(); 
    var line2 = new TimeSeries(); 
    var socket = io.connect('http://demo-project.wisar.c9.io/'); 
    socket.on('news', function (data) { 
     for (var property in data) { 
      dataPoint = data[property]; 
     } 
     line1.append(new Date().getTime(), dataPoint); 
     line2.append(new Date().getTime(), 40); 
     socket.emit('my other event', { my: dataPoint }); 
    }); 
</script> 
. 
. 
.  

Как я уже говорил, оба модуля расположенный в подкаталоге node_modules каталога проекта, в котором находятся приведенные выше сценарии. Документация узла описывает, как должны быть разрешены разрешения (http://nodejs.org/api/modules.html#modules_all_together), и я думаю, что я могу следовать пути к тому, как он разрешает ссылку на socket.io посредством маршрута index.js ... но он также работает, когда я поставьте «/» впереди, на который я не могу найти путь. Никакая перестановка или комбинация путей не разрешают модулю сглаживания. smoothie, btw, представляет собой небольшое приложение для диаграмм, которое можно найти в npm под этим именем.

Любая помощь будет оценена по достоинству.

ответ

0

Если текущий файл находится в том же каталоге, node_modules, затем загрузить smoothie попробовать этот путь в ГКЗ тег сценария:

./node_modules/smoothie/smoothie.js 

Путь smoothie/smoothie.js не дает расположение smoothie.js, который находится в node_modules/smoothie/smoothie.js. Это сработало для меня, надеюсь, это сработает для вас.

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