标签: ejs

渲染时发送到 EJS 的空参数

我对 nodejs 相当陌生,我一直在努力解决这个问题,到目前为止我找不到问题所在。

在我的应用程序中的某个时刻,我渲染了一个带有一些参数的 EJS 模板,但似乎即使获得了参数,它们也是空的....

我测试了最基本的情况:

console.log(req.user);
res.render('menu.ejs', { user: String(req.user.username) });
Run Code Online (Sandbox Code Playgroud)

控制台输出:

{ id: 1,
  username: 'bob',
  password: 'secret',
  email: 'bob@example.com' }
Run Code Online (Sandbox Code Playgroud)

所以我没有发送空值。menu.ejs 代码如下:

<html>
    <body>
        <% user %>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

真的很简单。但是当页面被渲染时,我得到的只是一个空页面......即使有一个和更多的 HTML,我只是不断地为用户获取和空值......

在我的应用程序中的某个时刻,我使用护照来验证我的用户,并使用 flash,我设法通过以下方式收到一条消息:

res.render('login.ejs', { message: req.flash('message') });
Run Code Online (Sandbox Code Playgroud)

但这仍然给我留下了 menu.ejs 错误。我重命名了文件,重命名了传递的参数,添加了更多参数,对传递的参数值进行了硬编码......我总是得到相同的结果=(

项目依赖:

"dependencies": {
    "express": "~4.9.x",
    "express-session": "1.9.3",
    "mysql ": "2.5.3",
    "body-parser": "1.10.0",
    "passport": "0.2.1",
    "passport-local": "1.0.0",
    "connect-flash": "0.1.1",
    "cookie-parser": "1.3.3",
    "ejs": "1.0.0"
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ejs node.js express embedded-javascript

2
推荐指数
1
解决办法
1728
查看次数

ejs 模板变量未在页面加载和错误中定义

我有一个提交给快递应用的表格:

app.post('/myform', function (req, res) {
    var content = new registration(req.body);
    content.save(function(errObj){
    if(errObj){
        res.render('registration',{error: errObj});
    } else {
        res.render('thankyou');
    }
});
Run Code Online (Sandbox Code Playgroud)

如果将表单数据保存到 mongoDb 时出现任何错误,我想在表单顶部显示这些错误,以便将错误对象传递回 ejs 模板:

<% if (error) { %>
   <li><%= error %></li>  
<% } %>
Run Code Online (Sandbox Code Playgroud)

但是当我最初加载页面并且还没有错误时(因为尚未提交表单)我在页面上收到一个错误并且表单没有呈现:

error is not defined
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

ejs node.js express

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

EJS - 将新行转换为 &lt;br/&gt; 并保持内容编码

这类似于Jade - 将新行转换为 <br/> 并保持内容编码

那么有没有简单的方法可以在 ejs 中做同样的事情:

<%- escape(foo).replace(/\n/g, '<br/>') %>
Run Code Online (Sandbox Code Playgroud)

这可以通过从 ejs 中提取转义方法并分配给 res.locals 来实现,但如果可能的话,我正在寻找更优雅的东西

ejs node.js

2
推荐指数
1
解决办法
3398
查看次数

在 EJS 中遵循 If 条件给出样式

<% docs.forEach( function ( doc ){ %>

<div class="item">
    <% if (doc.Active) { %>
    <style> .item { background-color:red }</style>
    <% } %>
</div>

<% }); %>
Run Code Online (Sandbox Code Playgroud)

想象3个文档,

doc1 (Active == true)
doc2 (Active == true)
doc3 (Active == false)
Run Code Online (Sandbox Code Playgroud)

我只想给风格Active == true。我像上面一样编码,但结果是每个都div被赋予了风格。所以最后都是红色背景,这不是我所期望的。

如何在EJS 中有条件地提供样式?

javascript css ejs

2
推荐指数
1
解决办法
1392
查看次数

如何在 intellij 想法中编辑 .ejs 文件

我正在尝试在 intellij 想法中编辑 .ejs 文件我已经安装了 ejs 插件并重新启动了 intellij 但我无法打开/编辑 .ejs 文件

我正在处理一个 node.js 项目

intellij-idea ejs node.js

2
推荐指数
1
解决办法
4324
查看次数

使用可变数据呈现HTML并转换为PDF

我有一个html模板页面,我想通过EJS填写数据,之后我想将这个完成的页面传递给PDF创建者; 最终的结果是我的页面的一个漂亮的PDF版本充满了我的数据.

对于PDF创建者,我正在使用NPM html-pdf进行转换.问题是,我不知道我可以用我的数据呈现页面,自动保存,然后将完成的页面传递给PDF创建者,因为PDF创建者只接受保存网页的服务器路径.

也许我正在接近这个错误的方式,但下面是我目前所拥有的,但事实并非如此.任何正确方向的帮助将不胜感激.

var renderPDF = function() {
  var pdf = require('html-pdf');
  // pulls html page
  var html = fs.readFileSync('views/assets/html/render.ejs', 'utf8');
  var options = {};
  // creates views/test.pdf
  pdf.create(html, options).toFile('views/test.pdf', function(err, res) {
    if (err) return console.log(err);
    console.log(res);
  });
};
// this is how I usually render ejs files with data
response.render('assets/html/render.ejs', {myDataOject});
// start the conversion
renderPDF();
Run Code Online (Sandbox Code Playgroud)

ejs node.js express

2
推荐指数
1
解决办法
1706
查看次数

如何将数据数组从 express.js 传递到 ejs 模板并呈现它们

express.js在我的 nodejs 网络应用程序中使用,用户输入一些条件,程序得到一个数据数组,如下所示:

var data = [
  {
    name: 'Salmons Creek',
    image: 'https://farm6.staticflickr.com/5479/11694969344_42dff96680.jpg',
    description: "Great place to go fishin' Bacon ipsum dolor amet kielbasa cow"
    },
  {
    name: 'Granite Hills',
    image: 'https://farm5.staticflickr.com/4103/5088123249_5f24c3202c.jpg',
    description: "It's just a hill.  Made of granite.  Nothing more! Cow doner."
    },
  {
    name: 'Wildwood Miew',
    image: 'https://farm5.staticflickr.com/4016/4369518024_0f64300987.jpg',
    description: 'All campsites.  All the time.Short ribs pastrami drumstick.'
    },
  {
    name: 'Lake Fooey',
    image: 'https://farm7.staticflickr.com/6138/6042439726_9efecf8348.jpg',
    description: 'Hills and lakes and lakes and hills.  Pork ribeye pork …
Run Code Online (Sandbox Code Playgroud)

javascript ejs node.js express

2
推荐指数
1
解决办法
5128
查看次数

如何在我的 ejs 文件中包含引导程序文件?

所以我已经使用 npm -bootstrap@3 安装了引导程序,但是当我尝试在我的应用程序中包含来自 node_modules 的 bootstrap.min.css 文件时,它在我的控制台中显示此错误:

错误信息

在此处输入图片说明

在网络选项卡中显示

在引导源中找不到 404。

以下是我的项目结构中的一些图像:

项目文件夹结构

在此处输入图片说明

包含引导程序文件的 ejs 代码

在此处输入图片说明

这里有什么问题?

javascript css ejs node.js twitter-bootstrap

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

用字符串引号打印 EJS 变量

我正在尝试将一个数组从节点中的后端发送到带有 EJS 文件的前端。

这是后端的数组:

[ '2017-12-06T13:45:00.000Z',
  '2017-12-06T13:50:00.000Z',
  '2017-12-06T13:55:00.000Z',
  '2017-12-06T14:00:00.000Z',
  '2017-12-06T14:05:00.000Z',
  '2017-12-06T14:10:00.000Z',
  '2017-12-06T14:15:00.000Z' ]
Run Code Online (Sandbox Code Playgroud)

但是当我像这样在 EJS 文件中打印时:

<%= price_labels %>
Run Code Online (Sandbox Code Playgroud)

我在渲染的 HTML 中得到了这个:

[2017-12-06T13:45:00.000Z,2017-12-06T13:50:00.000Z,2017-12-06T13:55:00.000Z,2017-12-06T14:00:00.000Z,2017-12-06T14:05:00.000Z,2017-12-06T14:10:00.000Z,2017-12-06T14:15:00.000Z]
Run Code Online (Sandbox Code Playgroud)

没有字符串引号。我怎样才能得到字符串引号?

ejs node.js express

2
推荐指数
1
解决办法
3663
查看次数

为什么request.body未定义?

我有一个node-js服务器,其中包括bodyparser和所有内容:

var express = require('express');
var dbcon = require('./app/db/databaseconnection');
var bodyParser = require('body-parser');

var app = express();
var router = express.Router();

var filepath = __dirname + '/views/';
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
app.use('/', router);
app.use(bodyParser);
app.use(bodyParser.json()); // support json encoded bodies
app.use(bodyParser.urlencoded({ extended: false })); // support encoded bodies
app.use('*', (request, response) => response.render(filepath + '404', { page_name: '404' }));


// var results = dbcon.getProducts().then(results => {
//      return results;
//  }).catch(err => { console.log(err) })
 //ejs.render(store , { …
Run Code Online (Sandbox Code Playgroud)

request ejs node.js express body-parser

2
推荐指数
1
解决办法
4962
查看次数