我对 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)
有任何想法吗?
我有一个提交给快递应用的表格:
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)
我怎样才能解决这个问题?
这类似于Jade - 将新行转换为 <br/> 并保持内容编码
那么有没有简单的方法可以在 ejs 中做同样的事情:
<%- escape(foo).replace(/\n/g, '<br/>') %>
Run Code Online (Sandbox Code Playgroud)
这可以通过从 ejs 中提取转义方法并分配给 res.locals 来实现,但如果可能的话,我正在寻找更优雅的东西
<% 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 中有条件地提供样式?
我正在尝试在 intellij 想法中编辑 .ejs 文件我已经安装了 ejs 插件并重新启动了 intellij 但我无法打开/编辑 .ejs 文件
我正在处理一个 node.js 项目
我有一个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) 我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) 所以我已经使用 npm -bootstrap@3 安装了引导程序,但是当我尝试在我的应用程序中包含来自 node_modules 的 bootstrap.min.css 文件时,它在我的控制台中显示此错误:
错误信息
在网络选项卡中显示
在引导源中找不到 404。
以下是我的项目结构中的一些图像:
项目文件夹结构
包含引导程序文件的 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)
没有字符串引号。我怎样才能得到字符串引号?
我有一个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)