2012-04-21 7 views
2

node.jsとnow.jsが正常にインストールされました。now.js:server.jsを起動しようとすると、「オブジェクトにメソッドがありません」というエラーメッセージが表示される

now.jsについては

が、これは私がやった方法です:

npm install now -g 
npm install now (had to add this one. Without it, I get a "Cannot find now..." error message) 

私は、ノードサーバを起動し、次のようにserver.jsファイルを提供する場合:

var httpServer = require('http'); 
httpServer.createServer(function (req, res) { 
res.writeHead(200, {'Content-Type': 'text/html'}); 
res.write('Node is ok'); 
res.end(); 
}).listen(8080); 
console.log('Server runs on http://xxxxx:8080/'); 

すべては大丈夫です。

var nowjs = require("now"); 
var everyone = nowjs.initialize(httpServer); 

everyone.now.logStuff = function(msg){ 
    console.log(msg); 
} 

は、私は(テスト目的のために)同じフォルダにindex.htmlファイルを作成

<script type="text/javascript" src="nowjs/now.js"></script> 

<script type="text/javascript"> 
    now.ready(function(){ 
    now.logStuff("Now is ok"); 
    }); 
</script> 

今、私は、このファイルにnow.jsの基本的な使用を追加しようとしています

今回、これはサーバの起動時に、私は、端末上で得るものです:

Server runs on http://xxxxx:8080/ 

[TypeError: Object #<Object> has no method 'listeners'] 
TypeError: Object #<Object> has no method 'listeners' 
    at Object.wrapServer (/home/xxxx/node_modules/now/lib/fileServer.js:23:29) 
    at [object Object].initialize (/home/xxxx/node_modules/now/lib/now.js:181:14) 
    at Object.<anonymous> (/home/xxxx/server.js:10:22) 
    at Module._compile (module.js:444:26) 
    at Object..js (module.js:462:10) 
    at Module.load (module.js:351:32) 
    at Function._load (module.js:309:12) 
    at module.js:482:10 
    at EventEmitter._tickCallback (node.js:245:11) 

私は「ことを覚えておいてください絶対初心者です。

は、多くの場合、端末使用のためのシステム全体のバイナリを提供することを意図して、あなたの助け

+1

いくつかのこと、1)-gフラグをインストールしないことをお勧めし、インストールします好ましくはpackage.jsonファイルを使用してプロジェクト内のローカルに配置します。 2)now.readyコールバックが呼び出されますか? 3)nowjs/now.jsがロードされていますか?おそらく/nowjs/now.jsを試してみてください。 –

+0

サーバー側でこのエラーが発生していますか? –

答えて

1

「NPM -gインストールのグローバルレベルでモジュールをインストールしていただき、ありがとうございます。 Rubyの宝石を考える。プロジェクトの一部としてモジュールを含める場合は、-gを削除する必要があります。

また、httpServer変数はサーバーではなく、httpモジュールです。 createServer()は次のようにnowjs.initialize()メソッドで使用する変数をキャプチャしたいサーバーオブジェクトを返します。

var http = require('http') 
    , now = require('now') 

// Returns an Http Server which can now be referenced as 'app' from now on 
var app = http.createServer(
    //... blah blah blah 
) 

// listen() doesn't return a server object so don't pass this method call 
//  as the parameter to the initialize method below 
app.listen(8080, function() { 
    console.log('Server listening on port %d', app.address().port) 
}) 

// Initialize NowJS with the Http Server object as intended 
var everyone = nowjs.initialize(app) 
関連する問題