gpt4 book ai didi

node.js - 在 OpenShift NodeJS 模板上找不到 EJS 模块

转载 作者:太空宇宙 更新时间:2023-11-03 22:38:49 25 4
gpt4 key购买 nike

我无法使用 EJS 作为 NodeJS 上的 View 渲染引擎。

我发现了几个类似的问题,但都说明了安装对其他人来说真正有用的 EJS。这对我来说不一样,可能是因为我无法选择正确的安装目录(在 OpenShift 存储库中的众多重复目录中)。

我有由 OpenShift 模板创建的 NodeJS 默认应用程序。在安装 EJS 依赖项时,我以某种方式搞砸了它,并收到以下错误(不可用模块的标准 NodeJS 错误):

Error: Cannot find module 'ejs'    at Function._resolveFilename (module.js:337:11)    at Function._load (module.js:279:25)    at Module.require (module.js:359:17)    at require (module.js:375:17)    at View.templateEngine (/usr/lib/node_modules/express/lib/view/view.js:134:38)    at Function.compile (/usr/lib/node_modules/express/lib/view.js:68:17)    at ServerResponse._render (/usr/lib/node_modules/express/lib/view.js:417:18)    at ServerResponse.render (/usr/lib/node_modules/express/lib/view.js:318:17)    at /var/lib/openshift/5123c2494382ec16ca000222/app-root/runtime/repo/server.js:114:17    at callbacks (/usr/lib/node_modules/express/lib/router/index.js:272:11)

除了在package.json中提到之外,我还尝试通过终端在应用程序根目录、运行时和nodejs-0.6级别安装ejs(并重新启动应用程序),但没有用。

我的目录结构是:

-app-root---data---repo-----node_modules (has ejs)-----server.js-----package.json ("dependencies": {"ejs" : ">=0.8.3"},)-----views-------defaultError.ejs---runtime-----data-----node_modules (empty)-----repo (identical to app-root/repo)-------node_modules (has ejs)-nodejs-0.6---data---repo (identical to app-root/repo)-----node_modules (has ejs)---runtime-----node_modules (empty)-----repo (identical)-------node_modules (has ejs)

defaultError.ejs 只是纯 html。server.js 有以下内容:



self.createRoutes = function() {
self.routes = { };

//...
self.routes['/'] = 函数(req, res) {
res.setHeader('内容类型', 'text/html');
res.send(self.cache_get('index.html') );
};

self.routes['/helloejs'] = function(req, res){
res.render('defaultError', { 布局:false } );
};
};

self.initializeServer = 函数() {
self.createRoutes();
self.app = express.createServer();

self.app.set(' View 引擎', 'ejs');
//添加应用程序的处理程序(从路由)。
for (self.routes 中的 var r) {
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

从此文件夹中使用npm install会在node_modules子文件夹中添加包文件夹(例如expresssocket.io)。您应该从此位置使用 node,因为所有本地安装的模块仅在此文件夹中可见。

关于node.js - 在 OpenShift NodeJS 模板上找不到 EJS 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15217886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com