Node.js 在OpenShift NodeJS模板上找不到EJS模块
我无法将EJS用作NodeJS上的视图渲染引擎 我发现了几个类似的问题,但都是关于安装真正适用于其他人的EJS的。这对我来说是不一样的,可能是因为我无法为安装选择正确的目录(在OpenShift repo中有如此多的副本) 我有OpenShift模板创建的NodeJS默认应用程序。在安装EJS依赖项时,我不知怎么搞砸了它,我得到了以下错误(不可用模块的标准NodeJS错误):Node.js 在OpenShift NodeJS模板上找不到EJS模块,node.js,ejs,openshift,Node.js,Ejs,Openshift,我无法将EJS用作NodeJS上的视图渲染引擎 我发现了几个类似的问题,但都是关于安装真正适用于其他人的EJS的。这对我来说是不一样的,可能是因为我无法为安装选择正确的目录(在OpenShift repo中有如此多的副本) 我有OpenShift模板创建的NodeJS默认应用程序。在安装EJS依赖项时,我不知怎么搞砸了它,我得到了以下错误(不可用模块的标准NodeJS错误): 希望这篇长文章能把我的问题说清楚:)错误是由于使用了不正确的目录。您必须安装软件包并从项目目录运行应用程序。下面是我用
希望这篇长文章能把我的问题说清楚:)错误是由于使用了不正确的目录。您必须安装软件包并从项目目录运行应用程序。下面是我用作项目的文件夹的目录结构
.
├── app.js
├── node_modules
│ ├── express
│ ├── jade
│ └── socket.io
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
├── routes
│ ├── index.js
├── server.js
└── views
└── layout.jade
使用此文件夹中的
npm install
在node_modules子文件夹中添加包文件夹(如express
,socket.io
)。您应该从此位置使用节点
,因为所有本地安装的模块都只能从此文件夹中看到。在我的情况下,我只是在package.json中手动添加了EJB:
并运行npm安装(可能需要使用sudo运行)
请注意,默认情况下,ejs查看视图目录安装ejs时,您必须使用选项--save: 并创建.gitignore文件:
node_modules
我提到的目录结构是由OpenShift平台维护的,因此它可以以标准方式管理构建/部署周期。正如我所看到的,这个结构也和你的一样。虽然这里有很多重复的“repo/”目录,但我还是迷路了。我还尝试安装ejs目录“app root/runtime/”和“app root/runtime/repo”(原始错误跟踪中提到的目录)。我不确定确切原因,但这就是我的问题消失的原因:我在package.json中添加了“express”。这非常奇怪,因为OpenShift上的所有应用程序都可以默认安装express。标记上述答案是正确的,因为它至少提供了一个必要的检查点。
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]);
}
};
.
├── app.js
├── node_modules
│ ├── express
│ ├── jade
│ └── socket.io
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
├── routes
│ ├── index.js
├── server.js
└── views
└── layout.jade
{
"name": "myApp"
"dependencies": {
"express": "^4.12.2",
"ejs": "^1.0.0"
}
}
npm install ejs --save
node_modules