Articles of 表示

如何执行express来将string解释为HTML代码?

我开始使用node.js,特别是express.js。 鉴于我喜欢尽可能干 ,我已经决定只有一个index.pug模板,其中有一个单一的HTML元素main.content身体。 实际内容由pug.renderFile()根据摘录创build,存储在<name>.pug文件中。 整个画面是这样的: SERVER.JS response.render("index", { content: pug.renderFile(excerpt("aboutus"), { title: "About Us", subtitle: "Some subtitle here", article: "Some text here" }) }); ABOUTUS.PUG h1= title h3= subtitle article= article INDEX.PUG //- html-head-body routine main.content= content 问题是, pug.renderFile()以string的forms返回HTML代码,而不是获取main.content元素内的main.content元素,我得到这个确切的string作为该元素的.innerHTML 。 那么,我的错误是什么?

我无法用node.js读取JSON文件

您好,我得到了Node.js中的以下代码 fs.readFile(file, function(err, obj) { obj.data1.forEach(function(element) { console.log (element.key, element.key1); }); }) 我试图以下面的json格式显示所有的关键和价值: { "data1": { "key": "iohiohio", "key1": "jhuihuj" }, "data2": { "key4": "hoih", "key5": "kjhi" } } 所以我想要的结果是这样的: key1:jhuihuj,key4:hoih 并显示在html / ejs文件中。

将variables从Node.js服务器传递给静态页面脚本

我有一个基本的node.js应用程序提供静态index.html包含一个JS应用程序。 我有一个login路线,validation用户名/ pwd针对我的mongo数据库并redirect到“/”: app.post('/login', function(req,res) { let inputUser=req.body.username; let inputPwd=req.body.password; findUser({'username':inputUser},function(data){ if ((data[0].srnm===inputUser)&&(data[0].psswd===inputPwd)) { res.redirect('/'); } else { res.writeHead(200); res.write(`INVALID USERNAME OR PASSWORD TRY AGAIN OR GO AWAY`); res.end(); } }); }); 我的index.html包含一个script.src JS应用程序。 app.get('/', function (req, res) { res.sendFile(path.join(__dirname+'/index.html')); }); 我想在这个脚本中访问一个IS_LOGGED_IN标志。 我如何传递脚本这个信息? 我需要做一个AJAX请求/把它放在一个头之前,我的redirect莫名其妙? 或者是我的方法有点缺陷? 对不起,如果这是明显的。 我是非常新的节点(也需要学习async.js /承诺避免callback地狱)。 谢谢。

使用Express和Passport JSredirect节点中的路由

比方说,我有一个路由定义使用快速路由器来呈现付款方式: router.get('/payment', (req, res) => { if (req.user) { res.render('payment', { user: req.user }); } else { res.redirect('/login'); } }); 如果我没有login,那么我应该被带到login页面,当我login时,我想被redirect到付款表单。 我的login会话是使用Passport构build的。 以下是我的POSTlogin路线的样子: router.route('/login').post((req, res, next) => { req.assert('email', 'Please sign up with a valid email.').isEmail(); req.assert('password', 'Password must be at least 4 characters long').len(4); var errors = req.validationErrors(); if (errors) { req.flash('errors', errors); return […]

express-js服务器中的HTTPS SSL损坏(net :: ERR_CERT_COMMON_NAME_INVALID)

我有一个快速的js应用程序,我想在HTTPS上收听。 我有一个.key文件和一个.crt文件,它们已经是PEM格式的(它们包含可读的文本, 因为这个答案要检查 ),所以我使用了OpenSSL和这些命令(从上面链接的答案中获得)答案我曾尝试使用.key和.crt文件,我已经使用.pem文件只是将这两个文件重命名为.pem,没有成功): openssl x509 -in public.crt -out public.pem -outform PEM openssl rsa -in private.key -out private.pem -outform PEM 当我尝试访问https:// localhost的网站时,这是我得到的错误: 我怎样才能使其按预期工作? 请注意证书和密钥是有效的,因为我已经在现有的网站上使用它们,它不是一个自签名的testing证书。 此外,客户端页面试图获取资源“/嘿”,但除了证书中的HTTPS错误,而不是资源页面得到一个响应,说:“无法GET /” 以下是node.js应用程序的代码: var express = require('C:/Users/f.fiore/AppData/Roaming/npm/node_modules/express'); var fs = require('fs'); var http = require('http'); var https = require('https'); var key = fs.readFileSync('./private.key'); var cert = fs.readFileSync('./public.crt') var options = { […]

给定未定义的res.statusCode

任何正确的方向指针非常赞赏,我使用节点/expression,仍然是一个初学者,试图重用一些代码从以前的工作项目,但已经卡住了。 尝试访问将用于validation电子邮件的API,但响应不给我statusCode我期望。 var request = require('request'); var ValidEmailApiURL = "(path to api)"; module.exports = { verifyEmailAPI: function(emailToken) { return new Promise(function(resolve, reject) { request({ url: ValidEmailApiURL , method: 'PUT' }, function(err, res, body) { console.log(res.statusCode); if (err) reject(err); if (res.statusCode === 200) { return resolve(body); } else if (res.statusCode === 404) { return reject(body); //return […]

使用Sequelize和Express进行API路由时出错

我有一个问题,追查为什么我的路由失败。 我是Sequelize和Express路由的新手。 目标 – 访问API端点'/ v1 / agent /:id'时,我想从Sequelize查询返回一个JSON响应。 我已经确认查询起作用,并将一行映射到我的Agent模型。 当我启动应用程序,我得到一个Router.use() requires middleware function but got a ' + gettype(fn)); 来自Node的exception。 来自initializeDb函数的exception,但我不知道为什么。 这里是根index.js: import http from 'http'; import bodyParser from 'body-parser'; import express from 'express'; import sequelize from 'sequelize'; import config from './config'; import routes from './routes'; let app = express(); app.server = http.createServer(app); app.use(bodyParser.json({ […]

尝试从使用Mongoose的另一个查找中返回1个字段

我有以下快速路由,我试图通过查找用户电子邮件返回我的用户模型中的特定字段的值。 即使运行以下我不限于特定的字段正在产生一个错误: "message": "Cast to string failed for value \"[object Object]\" at path \"email\"", 我的代码: app.post('/users/forgot',(req, res) => { var body = _.pick(req.body, ['email']); User.find({ email: body }).then((user) => { res.send({user}); }, (e) => { res.status(400).send(e); }); }); 我怎样才能返回我正在寻找的价值?

用单一资源粒度表示ACL

我将ACL添加到nodejs / express应用程序。 我已经阅读了模块acl和express-acl的文档,但是缺less一些东西。 他们没有提供如何处理单一资源访问的例子。 典型的例子:用户可以编辑自己的评论,但只能阅读其他用户的评论。 因此,拥有一个授予或拒绝对资源评论/编辑的编辑权限的angular色是不够好的。 该权限取决于用户正在访问哪个评论。 有没有一种方法可以通过在npm上提供的一个模块来实现,或者是在acl模块提供对资源的访问之后,必须在控制器中实现的吗? 谢谢

NodeJS Express – 如何从控制器检索socketio房间列表

我的app.js文件中有一个socket.io服务器 const port = process.env.PORT || 3000; const server = https.createServer(options, app); const io = require('socket.io'); const ios = io(server); const routes = require('./routes/index'); app.use('/', routes); 从那个文件中,我知道如何获得房间清单 ios.sockets.adapter.rooms 现在我需要从我的一个路由文件(其中我也实现“控制器”逻辑,我会稍后重构)访问ios , # routes/index.js var express = require('express'); var router = express.Router(); router.get('/', function(req, res) { // // I'd like to check ios.sockets.adapter.rooms HERE // HOW DO […]