0

Express.js サーバーを使用していて、アプリ インスタンスにミドルウェアを挿入しようとしています。

app.configure(function() {
 app.use(express.bodyParser());
 app.use(express.methodOverride());
 app.use(app.router);
 app.use(express["static"](PUBLIC_PATH));
});

hello = function(req, res, next) {
 console.log("hello world");
 next();
};

app.configure('development', function() {
 app.use(hello());
 app.use(express.errorHandler({
 dumpExceptions: true,
 showStack: true
 }));
});

現在のインスタンスHello()に関数を挿入しようとしています。appしかし、コンソールからコードを実行すると、「hello world」が返されますが、コンソールにもいくつかのエラーがあります。私はどこで間違ったことをしましたか。

hello world

/Users/mma/Desktop/mustdelete/aaron/server/app.coffee:13
  return next();
         ^
TypeError: undefined is not a function
at Object.module.exports.exports.hello (/Users/mma/Desktop/mustdelete/aaron/server/app.coffee:13:14)
at Function.module.exports.app.configure.app.set.layout (/Users/mma/Desktop/mustdelete/aaron/server/app.coffee:16:30)
at Function.app.configure (/Users/mma/Desktop/mustdelete/aaron/node_modules/express/lib/application.js:395:61)
at module.exports (/Users/mma/Desktop/mustdelete/aaron/server/app.coffee:15:9)
at Object.<anonymous> (/Users/mma/Desktop/mustdelete/aaron/server/index.js:2:34)
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)
4

1 に答える 1

3

関数の戻り値(括弧付き)を渡す必要はありません。hello()関数の名前(括弧なし)だけを渡す必要がありapp.use(hello)ます。

于 2013-01-08T16:54:52.527 に答える