Tag: ejs

Express,EJS,testing未定义的挑战

我使用express框架创build了一个简单的nodejs网站,使用couchdb创build数据库,使用EJS创build模板。 有些时候,我的一些字段在我的一些JSON文档中是空的或未定义的,我需要处理它。 <% if (typeof test !== 'undefined') { %> <p><%= test %></p> <% } %> 这段代码似乎处理“testing”字段未定义就好,但下面的代码会抛出一个错误,说'testing是未定义' <% if (test) { %> <p><%= test %></p> <% } %> 为什么JavaScript不明白testing是未定义的,然后把if语句放在false?

用html-webpack-plugin在开发模式下在webpack中构buildHTML

我正尝试使用html-webpack-plugin使用index.ejs构build单独的HTML文件。 我的index.ejs有以下代码块。 <% if (process.env.NODE_ENV === 'production') { %> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/react/15.2.1/react-dom.js"></script> <% } %> 我只想在生产中加载这些脚本。 在我的webpack文件中,我正在加载HtmlWebpackPlugin来指定ejs模板的位置。 plugins: [ new HtmlWebpackPlugin({ template: 'index.ejs' }), … 当我在生产模式下使用–env.prod运行webpack时,它将把文件正确地构build到我的public目录中。 但是,当我运行–env.dev ,这个插件不运行。 我如何在开发模式下运行HtmlWebpackPlugin来构build特定于我的开发环境的HTML文件?

我可以呈现JSON.parse数据到EJS吗?

我是NodeJS和Express的新手(一般编码)。 我正在尝试将数据呈现到EJS视图页面,以便在前端处理它。 它看起来像这样: app.set('view engine','ejs'); var str = JSON.parse('[{"name":"bill", "age":"26"}, {"name":"jeff", "age":"32"}]'); str.forEach(function(data){ console.log(data.name); }); app.get('/data', function(req, res){ res.render('data', {str:str}); }); 我尝试通过input<%= data %>在EJS文件中testing它,我在浏览器中得到的输出是[object Object],[object Object]。 我觉得我缺less了一些东西。 有人可以帮我吗? 谢谢 编辑:谢谢Booligoosh。 只是想补充说,我不得不在EJS方面将其转换回JSON,以使其工作。 🙂

在OpenShift NodeJS模板上找不到EJS模块

我无法使用EJS作为NodeJS上的视图渲染引擎。 我发现了几个类似的问题,但都说明安装真正适用于其他人的EJS。 这对我来说不一样,可能是因为我无法select正确的目录(在OpenShift repo中有很多重复项目)来安装。 我有由OpenShift模板创build的NodeJS默认应用程序。 当安装EJS依赖我以某种方式搞砸了,我得到以下错误(标准的NodeJS错误为不可用的模块): 错误:找不到模块'ejs' 在Function._resolveFilename(module.js:337:11) 在Function._load(module.js:279:25) 在Module.require(module.js:359:17) 在require(module.js:375:17) 在View.templateEngine(/usr/lib/node_modules/express/lib/view/view.js:134:38) 在Function.compile(/usr/lib/node_modules/express/lib/view.js:68:17) 在ServerResponse._render(/usr/lib/node_modules/express/lib/view.js:417:18) 在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 在callback(/usr/lib/node_modules/express/lib/router/index.js:272:11) 除了在package.json中提到,我尝试通过terminal在应用程序根,运行时和nodejs-0.6级别(以及重新启动应用程序)安装ejs,但没用。 我的目录结构是: -app根 – -数据 —回购 —– node_modules(有ejs) —– server.js —– package.json(“dependencies”:{“ejs”:“> = 0.8.3”},) —–意见 ——- defaultError.ejs – -运行 – – -数据 —– node_modules(空) —–回购(与app-root / repo相同) ——- node_modules(有ejs) -nodejs-0.6 – -数据 —回购(相同的应用程序根/回购) —– node_modules(有ejs) – -运行 […]

Ajax Express NodeJS在页面的一部分加载ejs模板

好的,所以我有代码,把我带到我的索引页,然后我通过ajax调用代码给我回从我的mongoose数据库的结果。 所有这些调用正在工作,但我似乎无法弄清楚如何让我的代码执行成功的ajax调用加载另一个较小的ejs文件在当前页面的一部分? 我已经阅读了一些说我需要渲染ejs服务器端的东西,但是我怎样才能打电话给服务器,让它只更新页面的一部分,而不是整个页面加载。 我试图在已经产生完整结果的页面上执行searchfunction,所以我想用已经search的内容来replace完整的结果。 这里是我对数据库的导出调用: exports.index = function(req, res, next){ Recipe.find(). sort('-updated_at'). exec(function(err, recipes, count){ if( err ) return next( err ); res.render('index', { title: 'Recipe Finder Index', recipes:recipes }); }) }; exports.search = function(req, res, next){ var param=req.params.search; console.log(param); Recipe.find({"fn":new RegExp(param)}). sort('-updated_at'). exec(function(err, recipes, count){ if( err ) return next( err ); //res.render('index', { […]

使用Node.js和EJS在canvas上绘制图像

所以,我是Node新手,build立一个练习网站,用户可以在校园地图上的任何位置login并创build聊天室,或者join现有的聊天室。 我有我的Mongo架构等工作。 只是在按照我想要的方式渲染我的模型时遇到一些麻烦。 基本上,我试图使用canvas先绘制地图,然后绘制所有现有聊天室的位置指针。 这是我的控制器: var db = require('../models') module.exports = function(req, res) { // finds all the current chatrooms and passes them to the // the campus map to be rendered db.Chatroom.find().exec(function(err, chatrooms) { if (err) throw err; res.render('map.ejs', { title: "Campus Map", chatrooms : chatrooms }) }); }; 这是我的观点: <% include header.ejs %> […]

部署在Openshift上的Sails.js项目的错误可视化

我在Openshift上部署了我的Sails项目。 它的工作原理,但我收到错误的websockets,我无法加载build立在ejs上的页面。 我发现这些链接足以解释有关grunt / openshift,但我无法解决问题。 在Openshift上部署Sails.js 在Openshift上部署Sails.js …应用程序重新启动 我的nodejs.log是: DEBUG: Running node-supervisor with DEBUG: program 'app.js' DEBUG: –watch '/var/lib/openshift/537b5ae8500446c95900057f/app-root/data/.nodewatch' DEBUG: –ignore 'undefined' DEBUG: –extensions 'node|js|coffee' DEBUG: –exec 'node' DEBUG: Starting child process with 'node app.js' DEBUG: Watching directory '/var/lib/openshift/537b5ae8500446c95900057f/app-root/data/.nodewatch' for changes. Warning: connection.session() MemoryStore is not designed for a production environment, as it will leak […]

如何在Express / Sails上获得请求的“结束”?

我想缩小视图上的HTML,所以我需要注入一个函数(中间件)来获取请求内容并parsing以缩小html / ejs。 我正在试试这个: https : //stackoverflow.com/questions/25667227/how-to-sailsjs-minify-html-views-with-ejs 但它被closures,我不知道为什么,现在我正在尝试下面的代码,但控制台不显示日志,所以事件不被调用。 任何人都知道如何做到这一点? module.exports = { http: { customMiddleware: function (app) { app.use(function(req,res, next) { res.on('data', function(chunk){ console.log("INFO: "+chunk); response += chunk; }); res.on('end', function(){ console.log("End received!"); }); res.on('close', function(){ console.log("Close received!"); }); next(); }); } } };

EJS模板中的外部js

我使用EJS有一些麻烦。 我想在我的模板中使用一个JavaScript文件,但我找不到正确的方式来实现它,这里是我的代码到目前为止: game.ejs: <!DOCTYPE html> <html> <head> <title>DDD-Duel !!!</title> <link rel="stylesheet" type="text/css" href="/view/css/game.css"> <script type="text/javascript" src="/socket.io/socket.io.js"></script> <script type="text/javascript" src= "/actions_client.js"></script> </head> <body> <style type="text/css"> … </style> // My body </body> </html> 无论我为脚本/actions_client.js尝试什么path,视图在浏览器中加载时都找不到。 这也许是node.js的一个问题我也使用,我不知道在哪里把我的脚本,以使我的视图find它(什么和/或文件夹localhost:8080 /?) 问候 编辑:我不明白的东西是如何查看findsocket.io/socket.io/js,而我没有find它时,我在我的电脑上search? 编辑:这是我的代码在我的节点文件的方式: var express = require('express'); var app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server), fs = require('fs'), composants […]

node.js – 当param express.js太长时,无法加载css

我正在通过Node.js,express.js,ejs写一个应用程序…. 我正在使用这个代码来使用ejs和加载CSS: app.engine('.html', require('ejs').__express); app.set('views', __dirname + '/views'); app.set('view engine', 'html'); app.use(express.static(__dirname + '/views')); 这是我的目录结构 myapp –Controller —-admin.js –db —-db.js –views —-admin ——user.html ——addUser.html —-css ——style.css –app.js Html加载CSS这样的 <link href="../css/style.css" rel="stylesheet"> 而我用我的网站的CSS。 当我使用参数: app.get('/admin/users', admin.users); app.get('/admin/add', admin.add); url是: loocalhost:1080 /pipe理/用户 loocalhost:1080 /pipe理/添加 那么我的CSS活跃 。 但是当我使用参数: app.get('/admin/users/add', admin.add); url是: loocalhost:1080 /pipe理/用户/添加 那么我的CSS不活跃。 那么如何解决呢? 请帮忙。