我正在尝试使用带有.ejs视图的Express js.
我想将我的页面重定向到任何事件上的另一个页面,让我们说"onCancelEvent"
根据Express js文档,我可以使用res.redirect("/ home");
但是我无法在我的ejs文件中获得res对象.
任何人都可以告诉我如何访问.ejs文件中的req和res对象
请帮忙.
谢谢
如何.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文件时添加另一个渲染属性吗?对吗?
我正在使用带有CanJS的EJS模板,并且正在寻找一种调试我的EJS代码的方法.目前firebug可以向我显示EJS中的语法错误,但在其他浏览器中,我无法看到任何内容.我需要仔细检查我的EJS文件以解决错误.我在网上搜索并发现了有关ejs_fulljslint https://code.google.com/p/embeddedjavascript/,但无法正常运行.我将脚本包含在我的HTML文件中,但仍未收到任何控制台错误.我无法在网上找到调试演示.
谁能告诉我如何调试我的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 <
如果无法做到这一点,我很想听听有关如何在我的页面上预加载数据的建议.
我有一个页面,可以制作一个foreach并显示一些像这样的照片
<% imgs.forEach(function(img) { %>
<img src="uploads/<%=user.username%>/screenshots/<%= img %>">
<% }); %>
Run Code Online (Sandbox Code Playgroud)
我想制作一个if语句,因为如果没有要显示的照片会给出这样的消息:
"没有照片上传"
我的快速应用程序(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) 在 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) 我如何将此缓冲区数据转换为图像,以便当循环结果并将其呈现在 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) 我目前有一个带有 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 应用程序仅捕获某些请求/路由,但我不太确定该怎么做。
我正在尝试使用 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)