私はsocket.ioを使用してデータをクライアントに通信し、そこでスムージーによって表示したいNodeアプリケーションを持っています。2 つの異なるノード環境に (NPM 経由で) 両方のパッケージをインストールし、どちらの場合もプロジェクトの node_modules サブディレクトリにインストールしました。環境の 1 つは BeagleBone Black で、もう 1 つは 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 )。 index.jsルート...しかし、パスが見つからない「/」を前に置いても機能します。パスの順列や組み合わせによってスムージー モジュールが解決されることはありません。ところで、smoothie は、その名前で npm にある小さなグラフ作成アプリケーションです。
どんな助けでも大歓迎です。