0

NodeJSの使用を開始するために、ここでStevenSandersonのビデオをフォローしています。モジュールをインストールEJSしました。ejs-middlewareserver.jsは次のようなものです。

var express=require('express'),
app = express(),
ejsMiddleware = require('ejs-middleware');

app.use(ejsMiddleware(__dirname + '/static', 'html', app));

しかし、これは次のように例外をスローしています。

app.use(ejsMiddleware(__dirname + '/static', 'html', app));

例外は次のとおりです。

Application has thrown an uncaught exception and is terminated:
TypeError: Object function app(req, res){ app.handle(req, res); } has no method 'register'
    at C:\Users\...Inventify\node_modules\ejs-middleware\ejs-middleware.js:9:23
    at Object.<anonymous> (C:\Users\...Inventify\server.js:8:9)
    at Module._compile (module.js:446:26)
    at Object..js (module.js:464:10)
    at Module.load (module.js:353:31)
    at Function._load (module.js:311:12)
    at Module.require (module.js:359:17)
    at require (module.js:375:17)
    at Object.<anonymous> (C:\Program Files (x86)\iisnode-dev\release\x86\interceptor.js:211:1)
    at Module._compile (module.js:446:26)

頭も尻尾も取れません。私を助けてください。

編集:- @ Peter Lyonsによるこの回答に従って、次の変更を行いました。

registerInApp.register('.' + extension, ejs);

新着

registerInApp.engine('.' + extension, require(ejs));

しかし、次の例外が発生します。

TypeError: Object #<Object> has no method 'substring'
    at Function._resolveLookupPaths (module.js:235:23)
    at Function._resolveFilename (module.js:327:31)
    at Function._load (module.js:279:25)
    at Module.require (module.js:359:17)
    at require (module.js:375:17)
    at C:\Users\...Inventify\node_modules\ejs-middleware\ejs-middleware.js:10:47
    at Object.<anonymous> (C:\Users\...Inventify\server.js:12:9)
    at Module._compile (module.js:446:26)
    at Object..js (module.js:464:10)
    at Module.load (module.js:353:31)
4

1 に答える 1

1

Express 3.0を使用するのではなく、ejs-middleware呼び出すように更新する必要があるようです。回避策として、引数をejsMiddleware関数に渡さず、代わりに手動で登録してください。app.engineapp.registerapp

app.engine('.html', require('ejs').renderFile);

私はそれを更新しました。実際には、app.engineのexpress.jsドキュメントから直接引用しています。私が言えること(私は個人的にejsを使用していません)から、あなたはまったく必要がなく、それを使用して実行することができるように見えejs-middlewareますvisionmedia/ejs

于 2012-12-31T02:40:23.680 に答える