NodeJS のビュー レンダリング エンジンとして EJS を使用できません。
私はいくつかの同様の質問を見つけましたが、他の人にとって実際に機能する EJS のインストールについてすべて述べています。これは私にとっては同じではありません。おそらく、インストールに適切なディレクトリを (OpenShift リポジトリの非常に多くの重複の中から) 選択できないためです。
OpenShiftテンプレートによって作成されたNodeJSのデフォルトアプリがあります。EJS 依存関係をインストールしているときに、どういうわけかそれを台無しにして、次のエラーが発生しました (使用できないモジュールの標準 NodeJS エラー):
エラー: モジュール 'ejs' が見つかりません
Function._resolveFilename (module.js:337:11) で
Function._load (module.js:279:25) で
Module.require で (module.js:359:17)
要求時 (module.js:375:17)
View.templateEngine (/usr/lib/node_modules/express/lib/view/view.js:134:38) で
Function.compile で (/usr/lib/node_modules/express/lib/view.js:68:17)
ServerResponse._render で (/usr/lib/node_modules/express/lib/view.js:417:18)
ServerResponse.render で (/usr/lib/node_modules/express/lib/view.js:318:17)
/var/lib/openshift/5123c2494382ec16ca000222/app-root/runtime/repo/server.js:114:17 で
コールバック時 (/usr/lib/node_modules/express/lib/router/index.js:272:11)
package.json で言及する以外に、ターミナルから app-root、runtime、および nodejs-0.6 レベルで ejs をインストールしようとしましたが (およびアプリを再起動しました)、役に立ちませんでした。
私のディレクトリ構造は次のとおりです。
-アプリルート
- -データ
---レポ
-----node_modules (ejs あり)
-----server.js
-----package.json (「依存関係」: {"ejs" : ">=0.8.3"},)
-----ビュー
-------defaultError.ejs
- -ランタイム
- - -データ
-----node_modules (空)
-----repo (app-root/repo と同じ)
-------node_modules (ejsあり)
-nodejs-0.6
- -データ
---repo (app-root/repo と同じ)
-----node_modules (ejs あり)
- -ランタイム
-----node_modules (空)
-----レポ(同一)
-------node_modules (ejsあり)
defaultError.ejs は単純な html です。server.js には次のものがあります。
self.createRoutes = function() {
self.routes = { };
//...
self.routes['/'] = function(req, res) {
res.setHeader('Content-Type', 'text/html');
res.send(self.cache_get('index.html') );
};
self.routes['/helloejs'] = function(req, res){
res.render('defaultError', { layout:false } );
};
};
self.initializeServer = function() {
self.createRoutes();
self.app = express.createServer();
self.app.set('view engine', 'ejs');
// Add handlers for the app (from the routes).
for (var r in self.routes) {
self.app.get(r, self.routes[r]);
}
};
この長い投稿が私の問題を明確にしてくれることを願っています:)