環境
- エクスプレス 3.2.4
- ShareJS 0.6.2
- OS X 10.8.3
ゴール
Express アプリ内で ShareJS を実行しようとしています。
問題
node app.js
実行時に次のエラーが表示されます。
/Users/eric/Documents/Projects/collabit/node_modules/share/src/server/index.coffee:52
server.use(options.staticpath, connect["static"]("" + __dirname + "/../.
^
TypeError: Object #<Server> has no method 'use'
at Function.create.attach.attach (/Users/eric/Documents/Projects/collabit/node_modules/share/src/server/index.coffee:52:14)
at Object.<anonymous> (/Users/eric/Documents/Projects/collabit/app.js:43:16)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
私はエクスプレス cli インターフェイスを使用してアプリを生成し、ShareJS でスワップすることを決定する前に SocketIO で問題なく作業していました。私の問題はサーバーの作成方法にあると確信していますが、高速機能を維持するためにサーバーオブジェクトを作成する方法を理解するのに十分ではありませんが、ShareJSがアタッチできるようにします.b
コード
/**
* Module dependencies.
*/
var express = require('express')
, sharejs = require('share')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
app.get('/', routes.index);
app.get('/users', user.list);
var server = http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
/**
* ShareJS Code
*/
var options = {db: {type: 'none'}};
sharejs.server.attach(server, options);
質問
Express 機能を維持しながら ShareJS をサーバー オブジェクトにアタッチできるようにするために、サーバー オブジェクトを作成する適切な方法は何ですか。
ありがとう!
ご協力ありがとうございます。追加情報が必要な場合はお知らせください。