标签: ejs

如何在.ejs文件中获取Expreejs的req和res对象

我正在尝试使用带有.ejs视图的Express js.

我想将我的页面重定向到任何事件上的另一个页面,让我们说"onCancelEvent"

根据Express js文档,我可以使用res.redirect("/ home");

但是我无法在我的ejs文件中获得res对象.

任何人都可以告诉我如何访问.ejs文件中的req和res对象

请帮忙.

谢谢

ejs node.js express titanium-mobile

7
推荐指数
1
解决办法
9191
查看次数

如何在Node.js和Express中以嵌套形式呈现多个.ejs文件?

如何.ejs以嵌套形式呈现多个文件?

所以我有以下文件:

var mysql = require('mysql');
var ejs = require('ejs');
exports.index = function(req, res){
    if (req.method=='POST'){
        var connection = mysql.createConnection({user:'root', password:'root', database:'testdb'});
        var name = req.param('name');
        connection.query('select * from table_name where name = ?', name, function(err, rows, fields){
            if(err) throw err;
            res.render('index', {
                 title: 'title', content: res.render('index2', {data:rows})
            });
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

其中index.ejs包含非常基本的html标签(比如html,head,body和one ptag),并且<%- content %>其中包含其他.ejs文件,其中不包含html,head或body标签的内容.仅假定呈现内容和标题.但是,当我通过POST请求访问此文件并尝试呈现文件然后从我的浏览器检出输出的HTML文件时,内容仅包含index2.ejs文件,这意味着它没有html,body,head标签.

那我错过了什么?如果我想包含一个Javascript库<script src='some_file.js'></script>,我应该在尝试渲染index2.ejs文件时添加另一个渲染属性吗?对吗?

rendering ejs node.js express

7
推荐指数
1
解决办法
1万
查看次数

如何在Chrome/Safari中调试EJS代码

我正在使用带有CanJS的EJS模板,并且正在寻找一种调试我的EJS代码的方法.目前firebug可以向我显示EJS中的语法错误,但在其他浏览器中,我无法看到任何内容.我需要仔细检查我的EJS文件以解决错误.我在网上搜索并发现了有关ejs_fulljslint https://code.google.com/p/embeddedjavascript/,但无法正常运行.我将脚本包含在我的HTML文件中,但仍未收到任何控制台错误.我无法在网上找到调试演示.

谁能告诉我如何调试我的EJS代码.如果您能为我提供任何示例,我们将非常感激.

javascript debugging ejs canjs

7
推荐指数
1
解决办法
7191
查看次数

获取Angular控制器上的EJS数据

我正在尝试使用ejs将数据从我的节点服务器传递到我的角度控制器,以便在控制器加载时可以使用它(对Angular或UI路由器不感兴趣,你可以解析它).

节点服务器(使用express):

app.get('/', function(req, res) {
  res.render('index', {
    names: ["Daniel", "Sarah", "Peter"]
  });
});
Run Code Online (Sandbox Code Playgroud)

角度控制器:

.controller('NamesController', function ($scope) {
  var info = <%= names %>;
});
Run Code Online (Sandbox Code Playgroud)

这样做会给我以下错误: Uncaught SyntaxError: Unexpected token <

如果无法做到这一点,我很想听听有关如何在我的页面上预加载数据的建议.

ejs node.js angularjs

7
推荐指数
1
解决办法
2415
查看次数

我怎样才能在ejs中使用if语句?

我有一个页面,可以制作一个foreach并显示一些像这样的照片

<% imgs.forEach(function(img) { %>
      <img src="uploads/<%=user.username%>/screenshots/<%= img %>">
 <% }); %>
Run Code Online (Sandbox Code Playgroud)

我想制作一个if语句,因为如果没有要显示的照片会给出这样的消息:

"没有照片上传"

html javascript ejs node.js express

7
推荐指数
2
解决办法
2万
查看次数

无法在视图目录中查找视图“index.ejs”

我的快速应用程序(app.js 文件)中有以下代码:

const express = require("express");
const app = express();

app.set('view engine', 'ejs');

app.get('/', function(req, res) {
    res.render('index');
});

app.listen(8080);
Run Code Online (Sandbox Code Playgroud)

以及以下依赖项:

"ejs": "^2.6.1",
"express": "^4.16.3",
"request": "^2.87.0"
Run Code Online (Sandbox Code Playgroud)

这是我的文件夹结构:

myapp
   app.js
   package.json
   views
      index.ejs
   node_modules
      [all node files]
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,它显示了这个错误:

Failed to lookup view "index.ejs" in views directory "mylocaldirectory/myapp/views"
Run Code Online (Sandbox Code Playgroud)

如果它有帮助,这里是其他错误消息:

  at Function.render (/mylocaldirectory/myapp/node_modules/express/lib/application.js:580:17)
    at ServerResponse.render (/mylocaldirectory/myapp/node_modules/express/lib/response.js:1008:7)
    at //mylocaldirectory/myapp/app.js:11:9
    at Layer.handle [as handle_request] (/mylocaldirectory/myapp/node_modules/express/lib/router/layer.js:95:5)
    at next (/mylocaldirectory/myapp/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/mylocaldirectory/myapp/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/mylocaldirectory/myapp/node_modules/express/lib/router/layer.js:95:5)
    at /mylocaldirectory/myapp/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/mylocaldirectory/myapp/node_modules/express/lib/router/index.js:335:12)
    at next (/mylocaldirectory/myapp/node_modules/express/lib/router/index.js:275:10) …
Run Code Online (Sandbox Code Playgroud)

javascript ejs node.js express

7
推荐指数
1
解决办法
1万
查看次数

SyntaxError:编译 ejs 时出现意外的标识符问题

在 Windows 中运行该应用程序时,我遇到了以下错误。

    SyntaxError: Unexpected identifier in \path\views\landing.ejs while compiling ejs
If the above error is not helpful, you may want to try EJS-Lint:
https://github.com/RyanZim/EJS-Lint
Or, if you meant to create an async function, pass `async: true` as an option.
    at new Function (<anonymous>)
    at Template.compile (\path\node_modules\ejs\lib\ejs.js:626:12)
    at Object.compile (\path\node_modules\ejs\lib\ejs.js:366:16)
    at handleCache (\path\node_modules\ejs\lib\ejs.js:215:18)
    at tryHandleCache (\path\node_modules\ejs\lib\ejs.js:254:16)
    at View.exports.renderFile [as engine] (\path\node_modules\ejs\lib\ejs.js:459:10)
    at View.render (\path\node_modules\express\lib\view.js:135:8)
    at tryRender (\path\node_modules\express\lib\application.js:640:10)
    at Function.render (\path\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (\path\node_modules\express\lib\response.js:1012:7)
Run Code Online (Sandbox Code Playgroud)

这是我的代码片段:

<% include partials/header %>
    <h1>Landing Page</h1> …
Run Code Online (Sandbox Code Playgroud)

ejs node.js

7
推荐指数
2
解决办法
2万
查看次数

将缓冲区数据转换为图像

我如何将此缓冲区数据转换为图像,以便当循环结果并将其呈现在 img src 中时,它将呈现为用户可以看到的图像

我正在使用 ejs 来渲染它

     <span>
        <img class="user-with-avatar" src=<%=item.photo%> />
     </span>

Run Code Online (Sandbox Code Playgroud)

当我 console.log(result.data.photo) 时,我得到这个

{"type":"Buffer","data":[100,97,116,97,58,14,79,8,113,97,65,43,57,55,89,69,88,51,66,101,70,86,112,121,112,121,121,121,80,81,104]},
{"type":"Buffer","data":[100,97,116,97,58,14,79,8,113,97,65,43,57,55,89,69,88,51,66,101,70,86,112,121,112,121,121,121,80,81,104]},
{"type":"Buffer","data":[100,97,116,97,58,14,79,8,113,97,65,43,57,55,89,69,88,51,66,101,70,86,112,121,112,121,121,121,80,81,104]}

Run Code Online (Sandbox Code Playgroud)

我该如何用这个代码安排来修复它


    app.get('/products', function (req, res) {
            if (req.session.token && req.session.user_id) {
                let data = {
                    token: req.session.token,
                    id: req.session.user_id,
                }
                let url = `https:/url/product/get_products?id=${data.id}&token=${data.token}`
                functions.callAPIGet(
                    url,
                    function (error, result) {
                        res.render('products', {
                            result: result.data
                        })
                    }
                );
            } else {
                res.redirect('/login')
            }
        });

Run Code Online (Sandbox Code Playgroud)

javascript ejs node.js express

7
推荐指数
1
解决办法
3万
查看次数

ExpressJS 由 ejs 和 React 前端混合支持

我目前有一个带有 Express 后端的 NodeJS 应用程序,并且所有前端都是用 EJS 实现的。当前的示例路线如下所示:

router.get("/:name&:term", function(req, res) {
    Course.find({ courseName: req.params.name, courseTerm: req.params.term }).populate("students")
    .exec(function(err, foundCourse) {
        if (err) {
            console.log(err);
        } else {
            console.log(foundCourse)
            res.render("courses/show", { course: foundCourse });        
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

我已经按照上面的示例路线实现了网站的许多页面。所以结构看起来像这样:

localhost:3000
-/courses
   -/show
   -/review
-/professors
   -/show
   -/rating
...
Run Code Online (Sandbox Code Playgroud)

但我最近参加了 React 课程,并希望将 React 用于新页面,例如localhost:3000/groups

有没有办法在某些页面上使用 React,并且仍然拥有我当前拥有的 EJS 页面?或者我是否必须将所有 EJS 页面重写为 React 组件?我对网络开发还很陌生,所以任何建议将不胜感激。

根据我的理解,我必须让 React 应用程序仅捕获某些请求/路由,但我不太确定该怎么做。

javascript ejs node.js express reactjs

7
推荐指数
1
解决办法
4333
查看次数

使用 HTML 和 Puppeteer 时出现 PDF 字体大小问题

我正在尝试使用 HTML 在浏览器(chrome v8)中生成 PDF,并将其发送到 puppeteer。由于 PDF 的某些部分有动态内容,因此 html 是使用 ejs 生成的。动态内容包括图像、html表格(行数和列数是动态的)和文本。

在 HTML 中,我在样式标签中定义了 css 来格式化内容。

虽然字体大小似乎来自样式标签 - 整个内容似乎针对某些内容组合而被压缩/收缩。看起来一个 PDF 内容是在 100% 缩放(正常大小)下生成的,而另一个是在 80% 缩放(所有内容看起来都较小)下生成的。

我尝试删除 img 标签(没有给出额外的 CSS 样式)- 这解决了数据组合的问题。

另外,在某些情况下,右侧的内容会被剪切 - 我尝试将 html 中的 body 标记设置为 100% 的宽度,但这并没有解决问题。

在浏览器中将 EJS 生成的 HTML 作为纯 HTML 文件查看 - 与 PDF 显示大小变化的情况没有区别。

任何解决此问题的指示将不胜感激。

字体大小设置为

* {
    Font-size: 16px;
}
Run Code Online (Sandbox Code Playgroud)

Puppeteer 代码片段如下:

const browser = await puppeteer.launch({
           args: ['--no-sandbox'],
           headless: true
       });


await page.setContent(bodyHtml, {
           waitUntil: 'networkidle0'
       });

var options = …
Run Code Online (Sandbox Code Playgroud)

html pdf-generation ejs node.js puppeteer

7
推荐指数
1
解决办法
3019
查看次数