1

Express over CloudFoundryで静的ファイルを提供するにはどうすればよいですか?私は次のコードを使おうとしていました:

app.use(express.static(__dirname+'/www'));

しかし、特定のURLにアクセスしているときに、奇妙な例外が発生します。

TypeError: Object #<SendStream> has no method 'on'
    at Object.static [as handle] (/var/vcap/data/dea/apps/FeedBack-0-c812c99aa3818946dd0bcf5538e2aecd/app/node_modules/express/node_modules/connect/lib/middleware/static.js:75:8)
    at next (/var/vcap/data/dea/apps/FeedBack-0-c812c99aa3818946dd0bcf5538e2aecd/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    at Object.expressInit [as handle] (/var/vcap/data/dea/apps/FeedBack-0-c812c99aa3818946dd0bcf5538e2aecd/app/node_modules/express/lib/middleware.js:31:5)
    at next (/var/vcap/data/dea/apps/FeedBack-0-c812c99aa3818946dd0bcf5538e2aecd/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    at Object.query [as handle] (/var/vcap/data/dea/apps/FeedBack-0-c812c99aa3818946dd0bcf5538e2aecd/app/node_modules/express/node_modules/connect/lib/middleware/query.js:44:5)
    at next (/var/vcap/data/dea/apps/FeedBack-0-c812c99aa3818946dd0bcf5538e2aecd/app/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    at Function.handle (/var/vcap/data/dea/apps/FeedBack-0-c812c99aa3818946dd0bcf5538e2aecd/app/node_modules/express/node_modules/connect/lib/proto.js:198:3)
    at Server.app (/var/vcap/data/dea/apps/FeedBack-0-c812c99aa3818946dd0bcf5538e2aecd/app/node_modules/express/node_modules/connect/lib/connect.js:66:31)
    at Server.emit (events.js:67:17)
    at HTTPParser.onIncoming (http.js:1134:12)
4

2 に答える 2

4

私もこれを間違えました、そして私は答えを見つけました。あなたはこれを行うことができます :

1位 vmc delete yourapp

2位vmc push yourapp --runtime node08

アプリをクラウドに初めてプッシュするときに、ノードランタイムの間違ったバージョン(node04、node06)を選択した可能性があり、サーバーは選択内容を記憶しています。

于 2012-08-14T10:17:08.283 に答える
2

テンプレートエクスプレスアプリケーションを作成すると、。/publicフォルダーから静的アセットを提供するように構成されます。構成が次のようになっていることを確認してください。

var app = express();

app.configure(function(){
  app.set('port', process.env.VCAP_APP_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(__dirname + '/public'));
});

必要に応じて、自分でソースをデプロイして、動作させることができるかどうかを確認できます。

于 2012-08-08T13:33:22.530 に答える