Tag: 表示

使用http-server和node express服务器

我已经看到了一个节点快递服务器的以下设置: server.js import { Server } from 'http'; import Express from 'express'; const app = new Express(); const server = new Server(app); 既然可以直接运行express,那么返回express服务器作为http服务器的参数有什么好处呢?

使用inversify-express-utils,我怎样才能整合websockets?

我们尝试使用websockets来连接基于inversify-express-utils来扩展我们的打字稿应用程序,但到目前为止还没有运气: import 'reflect-metadata'; import {interfaces, InversifyExpressServer, TYPE} from 'inversify-express-utils'; import { Kernel } from 'inversify'; import {UserController} from './controller/UserController'; import TYPES from './constant/types'; import * as socketIo from 'socket.io'; // set up kernel let kernel = new Kernel(); // create server let server = new InversifyExpressServer(kernel); kernel.bind<interfaces.Controller>(TYPE.Controller).to(UserController).whenTargetNamed(TAGS.UserController); server .build() .listen(3000, 'localhost', () => console.log('listening on […]

如何从单个服务器端模块(js文件)导出2个方法?

我正在使用Node / Express。 我有一个服务器,index.js。 我有一个不同的js模块,称为validmoves.js。 通常,我可以通过以下方式导出我在模块中定义的单个函数: module.exports = shuffleFunction; 然后在express服务器文件index.js中要求它说: let shuffle = require('./routes/shuffleRoute'); 如何从模块中导出2个function? 其中之一实际上是一个帮手function。

如何使用Express-JWT处理错误

我正在尝试使用express-jwt库,我不太明白它是如何处理错误的。 该文件说: error handling 默认行为是在令牌无效时抛出错误,所以您可以>添加自定义逻辑来pipe理未经授权的访问,如下所示: app.use(function (err, req, res, next) { if (err.name === 'UnauthorizedError') { res.status(401).send('invalid token…'); } }); 但我很困惑这是如何工作的。 如果我有一个简单的req res情况下,如果令牌是有效的,我想要调用next ,或者如果不是,那么调用next一个错误,在哪里我把该app.use函数? 例如,这是我的代码: router.post('/', expressJwt({ secret: jwtSecret, credentialsRequired: false }), (req, res, next) => { databaseController.findUser(req.user.email, (err, user) => { if (err) { return next(err) } res.json(user) }) }) 这里的err将来自我的数据库调用,而不是来自express-jwtvalidation。 任何帮助表示赞赏。

快递:如何获取快递服务器正在监听的主机名和端口,而无需等待请求

从向快速服务器发出的请求获取主机名和URL是相当直接的。 但似乎没有明确的方法来确定一个快递服务器正在监听哪个URL(在启动之后,但在发送任何请求之前)。 你如何找出快递服务器正在监听的主机和端口? expression甚至知道它正在监听的主机和端口?

如何在NodeJS / ExpressJS中正确redirect?

我在nodejs / expressjs中构build一个购物车应用程序。 我在用户login后redirect到正确的页面时遇到了一些问题。我发现了几篇紧密联系的文章,但是我所有的尝试从给定的文章中解决这些问题并没有起到什么作用。 access: function(req, res){ var data = JSON.parse(req.body.data); console.log(data); Customers.findOne({"custEmail": data.custEmail}, function(err, user){ if(err){ console.log(err); res.send("error"); }if(!user){ console.log("user not found"); res.send("error"); }else{ console.log("user found"); bcrypt.compare(data.custPassword, user.custPassword, function(err, reponse){ if(reponse){ req.session.regenerate(function(err){ if(err){ console.log(err); res.send("error"); }else{ req.session.success = true; res.send("Success"); //res.redirect('/'); } }); }else{ console.log("error"); } }); } }); 会发生什么事是,用户input他们的login信息并单击loginbutton。 Ajax请求将数据发送到此访问函数。 该function首先检查用户是否存在于数据库中。 如果它比继续比较bcrypt密码,如果他们相等,他们成功login,如果他们不相等,那么显然它错误了。 这个问题似乎在这里: […]

NodeJS延迟发送电子邮件

我正在使用Nodemailer在我的NodeJS / Express服务器中发送邮件。 发送邮件之前,我想等20分钟,而不是直接发送邮件。 我觉得这个感觉更直接发送邮件。 但我不知道如何做到这一点。 我想我不需要像NodeCron这样的NodeJS cronjob,或者我需要? router.post('/', (req, res) => { const transporter = nodemailer.createTransport(smtpTransport({ host: 'smtp.gmail.com', port: 465, auth: { user: 'noreply@domain.nl', pass: 'pass123' } })); const mailOptions = { from: `"${req.body.name}" <${req.body.email}>`, to: 'info@domain.nl', subject: 'Form send', html: `Content` }; transporter.sendMail(mailOptions, (error, info) => { if (error) res.status(500).json({ responseText: error }); […]

Javascript es6 – 它重新分配或参数?

有人能解释一下这里发生了什么? 我知道这些是中间件的快递,我正在看语法。 我明白了mustBeLoggedIn的es6语法,但是我不确定什么是const forbidden = message => (req, res, next) => {正在做。 message是req,res,next之前的另一个参数吗? 如果是这样,为什么不在括号内呢? 我原本以为这只是分配另一个variables名称的function。 所以我可以称它为forbidden()或message() ,不是吗? 但看看它是如何使用它看起来更像一个参数… 我注意到的另一个有趣的事情是forbidden中间件被调用的get请求和mustBeLoggedIn只被传递,而不是调用。 为什么? const mustBeLoggedIn = (req, res, next) => { if (!req.user) { return res.status(401).send('You must be logged in') } next() } const forbidden = message => (req, res, next) => { res.status(403).send(message) } module.exports = require('express').Router() […]

在Express中查询参数

我想在Node.js中使用Express访问查询参数。 由于某种原因, req.params不断出现作为一个空的对象。 这是我在server.js代码: const express = require('express'); const exphbs = require('express-handlebars'); const bodyParser = require('body-parser'); const https = require('https'); //custom packages .. //const config = require('./config'); const routes = require('./routes/routes'); const port = process.env.port || 3000; var app = express(); //templating engine Handlebars app.engine('handlebars', exphbs({defaultLayout: 'main'})); app.set('view engine', 'handlebars'); //connect public route app.use(express.static(__dirname + […]

获取“第一个参数必须是string或缓冲区”错误

// call the packages var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var figlet = require('figlet'); var querystring = require('querystring'); var http = require('http'); var fs = require('fs'); var request = require('request'); // configure app to use bodyParser() // this will let app get the data from a POST app.use(bodyParser.urlencoded({ extended: […]