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]);
}
};
この長い投稿が私の問題を明確にしてくれることを願っています:)