Tag: express

在服务器和客户端上使用Handlebars.js的Node.js

我在Node.js中有一个应用程序,使用Expressjs和Handlebars作为模板引擎。 Expressjs使用布局,然后呈现视图。 布局(layout.hbs)如下所示: <!doctype html> <html lang="en"> <head> </head> <body> {{{body}}} </body> </html> 当你访问一个路由时, {{{body}}}被replace为node.js中的服务器端。 例如: app.get('/', function(req, res){ res.render('index'}) }) 将用index.hbs的内容replace{{{body}}}标记。 现在,在客户端,我使用Backbone.js,并希望使用Handlebars来控制通过Backbone控制的视图。 问题是,因为这些网页已经通过把手呈现,所以当我尝试使用其中的把手(或把手内的把手)时,它不起作用。 没有错误,它只是不会用数据replace标签。 有没有人遇到过这个或有任何想法的工作? 谢谢!

如何debuggingnode.js导致100%的CPU使用率?

我有一个使用Express和Redis的节点应用程序。 在我们的开发服务器上,有一点使用节点开始使用100%cpu。 应用程序仍然响应,但最高报告节点使用100%。 在节点重新启动之前,CPU不会掉落。 我没有把它归结到任何引起它的特定路线或function上。 什么是诊断这个问题的最好方法? 我用v8-profiler查看了node-inspector,它给了我在这里报告的同样的错误https://github.com/dannycoates/v8-profiler/issues/10

想要了解NodeJS应用程序结构(Full JavaScript Stack)

我想知道一个典型的NodeJS应用程序的结构,因为我阅读和看到的项目越多,我就越困惑,特别是针对这样的问题:(甚至当我更新这个问题时)。 以MEAN堆栈为例,据我所知,NodeJS和Express负责服务器 部分,提供服务器接口等。MongoDB和Angular相当简单。 但是业务逻辑应该去哪里? 说如果我有一个controller.js包含一个函数, 和route.js文件绑定请求与这个控制器function。 我的问题是在哪个模块下这些文件属于/运行(Express或NodeJS?) NodeJS应用的起点在哪里? 说index.php是一个PHP应用程序的起点,但它在哪里NodeJS应用程序? 我可以看到所有nodejs项目都有一个名为server.js或app.js等的文件(包含诸如module.exports = app;类的东西)但是module.exports = app;如何知道要find并执行它的文件呢? 我是NodeJS上的一个新鲜的noob,express,sequelize.js / mongoose,jade / ejs,但是想要开始一个nodejs项目。 请大家详细说明每个模块提供的实际function,以及一个完整的js堆叠nodejs应用程序的典型结构的一般介绍? 提前致谢!

错误:大多数中间件(如bodyParser)不再与Express捆绑在一起

我需要创build一个Web服务,我在服务器中使用Node.js。 但是,当我在本地主机运行,我收到一个错误: 错误:大多数中间件(如bodyParser)不再与Express捆绑在一起,必须单独安装。 请参阅https://github.com/senchalabs/connect#middleware。 neo4jtest.js var config = require('./config'); var bodyParser = require('body-parser'); var app = express(); var neo4jurl = process.env.NEO4J_URL ; neo4jurl = neo4jurl +'/db/data/'; var query = [ 'START me=node:node_auto_index(name={inputusername}) MATCH me<–friend<–friend_of_friend where (friend_of_friend.entitytype={inputentitytype}) RETURN friend_of_friend;' ]; var insertquery = [ 'CREATE (user {entitytype:{inputentitytype}, name : {inputname}}) return user;' ]; var queryforallrelation = […]

监听单个快速应用程序的HTTP和HTTPS

我可以使用相同的路由和相同的中间件创build一个同时监听HTTP和HTTPS的Express服务器吗? 目前我在HTTP上使用Express来执行此操作,将HTTPS通道隧道传送到Express,但我更喜欢纯节点解决scheme。 我可以用这个代码做,但是使用标记为私有的handle方法: var express = require( 'express' ) , https = require("https") , fs = require( 'fs' ); var app = express.createServer(); // init routes and middlewares app.listen( 80 ); var privateKey = fs.readFileSync( 'privatekey.pem' ).toString(); var certificate = fs.readFileSync( 'certificate.pem' ).toString(); var options = {key: privateKey, cert: certificate}; https.createServer( options, function(req,res) { app.handle( […]

如何从nodejs / express向浏览器发送成功状态?

我已经在nodeJS / Expressjs服务器中编写了以下代码片段: app.post('/settings', function(req, res){ var myData = { a: req.param('a') ,b: req.param('b') ,c: req.param('c') ,d: req.param('d') } var outputFilename = 'config.json'; fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) { if(err) { console.log(err); } else { console.log("Config file as been overwriten"); } }); }); 这使我可以获取提交的表单数据并将其写入JSON文件。 这完美的作品。 但客户仍处于某种发布状态,最终超时。 所以我需要发送某种成功的状态或成功标题回到客户端。 我应该怎么做? 先谢谢你!

Node.js + Express:应用程序不会开始侦听端口80

我创build并启动一个像这样的应用程序: express -s -t ejs npm install express npm install ejs node app.js 它工作(在端口3000)。 但是,当我去端口更改为80,然后运行node app.js输出: node.js:198 throw e; // process.nextTick error, or 'error' event on first tick ^ TypeError: Cannot call method 'getsockname' of null at HTTPServer.address (net.js:746:23) at Object.<anonymous> (/var/www/thorous/app.js:35:67) at Module._compile (module.js:432:26) at Object..js (module.js:450:10) at Module.load (module.js:351:31) at Function._load (module.js:310:12) at […]

使用Node和Express进行基本的HTTP身份validation4

它看起来像使用Express v3实现基本的HTTP身份validation是微不足道的: app.use(express.basicAuth('username', 'password')); 版本4(我使用4.2)删除了basicAuth中间件,所以我有点卡住了。 我有下面的代码,但它不会导致浏览器提示用户input凭据,这是我想要的(以及我想象的旧方法): app.use(function(req, res, next) { var user = auth(req); if (user === undefined || user['name'] !== 'username' || user['pass'] !== 'password') { res.writeHead(401, 'Access invalid for user', {'Content-Type' : 'text/plain'}); res.end('Invalid credentials'); } else { next(); } });

使用passport.js在node.js中进行身份validation后,redirect到上一页

我试图build立一个使用node.js,express和passport.js的login机制。 login本身工作得相当不错,会话也很好地存储在redis中,但是在提示用户进行身份validation之前,将用户redirect到他所在的位置时遇到了一些麻烦。 例如,用户链接http://localhost:3000/hidden然后被redirect到http://localhost:3000/login但是我希望他再次被redirect到http://localhost:3000/hidden 。 这样做的目的是,如果用户随机访问一个页面,他需要首先login,他应该被redirect到/ login站点提供他的凭据,然后被redirect到他以前试图访问的网站。 这是我的login信息 app.post('/login', function (req, res, next) { passport.authenticate('local', function (err, user, info) { if (err) { return next(err) } else if (!user) { console.log('message: ' + info.message); return res.redirect('/login') } else { req.logIn(user, function (err) { if (err) { return next(err); } return next(); // <-? Is this line […]

nodejs护照authentication令牌

我正在编写一个nodejs应用程序,我想用它作为一个web应用程序以及一个API提供程序。 一旦用户通过身份validation,我想为该用户分配一个令牌用于后续请求。 这对Web应用程序的护照很有效,因为我只是用会话中的令牌序列化和反序列化用户。 但是,在响应API请求时,不存在用于存储会话信息的Cookie。 理想情况下,护照会在会话和请求主体中查找令牌。 有什么办法来configuration护照来完成这个?