Articles of 表示

在生产环境中dynamic生成快速路由失败

我见过很多人在他们的路线/ index.js中像这样dynamic地生成所有的路线: require("fs").readdirSync("./routes", 'utf8').forEach(function(file) { if (file != 'index.js' && file != '.DS_Store') { require("./"+file); } }); 这在开发中可以正常工作,但不能用于生产。 如果我删除这个并手动添加路线它工作正常。 有任何想法吗? 这是我的错误,如果你认为会有所帮助: node.js:134 throw e; // process.nextTick error, or 'error' event on first tick Error: ENOENT, No such file or directory './routes' at Object.readdirSync (fs.js:376:18) at Object.<anonymous> (/app/routes/index.js:4:15) at Module._compile (module.js:402:26) at Object..js (module.js:408:10) at Module.load […]

公共/私人restAPI

我使用Express.js框架在Node.js中构build了一个REST JSON Api。 对于身份validation,我使用HTTP基本。 这是我的代码到目前为止: var express = require('express'); var app = express(); app.configure(function(){ app.use(express.bodyParser()); }); // Http basic auth. app.use(function(req, res, next){ if(req.headers.authorization && req.headers.authorization.search('Basic ') === 0){ var header = new Buffer(req.headers.authorization.split(' ')[1], 'base64').toString(); var headerSplit = header.split(':'); var username = headerSplit[0]; var password = headerSplit[1]; if(username && password && (username.length >= 4 […]

Nodejs Mongoose – TypeError:无效的sort()参数

您好我正在尝试运行我的程序,但是当我尝试连接到本地主机在我的浏览器中,我收到以下错误每次。 我认为这是我的sorting或查询有问题,但我不确定究竟是哪里出了问题。 任何人都可以帮助修复我的代码 app.js代码也是正确的,我觉得那里也可能有错误..? 任何帮助欢迎! 🙂 Express 500 TypeError: Invalid sort() argument. Must be a string or object. at Query.sort (C:\nodeapps\nodeblox\node_modules\mongoose\lib\query.js:1167:11) at Function.Post.statics.getAll (C:\nodeapps\nodeblox\schemas\Post.js:44:9) at module.exports.app.post.username (C:\nodeapps\nodeblox\routes\index.js:45:10) at callbacks (C:\nodeapps\nodeblox\node_modules\express\lib\router\index.js:160:37) at param (C:\nodeapps\nodeblox\node_modules\express\lib\router\index.js:134:11) at pass (C:\nodeapps\nodeblox\node_modules\express\lib\router\index.js:141:5) at Router._dispatch (C:\nodeapps\nodeblox\node_modules\express\lib\router\index.js:169:5) at Object.router (C:\nodeapps\nodeblox\node_modules\express\lib\router\index.js:32:10) at next (C:\nodeapps\nodeblox\node_modules\express\node_modules\connect\lib\proto.js:190:15) at Object.methodOverride [as handle] (C:\nodeapps\nodeblox\node_modules\express\node_modules\connect\lib\middleware\methodOverride.js:37:5) 这是我的两个模式,我认为是造成这个问题 Post.js 'use strict'; var […]

如何在快速网站中使用节点的集群模块?

我已经读了一些关于在Node.js 0.8中引入的集群模块,但我不知道如何去(或者我应该)将它应用到运行在Express上的网站上。 我有一个漂亮的香草快递设置:由Hogan.js呈现的模板,由Stylus编译的CSS,没有websockets或花哨的中间件。 使用集群模块是否会显着提高性能? 如果是这样,在一个标准的Express项目中如何最好地使用集群呢?

更好的中间件链接在Express中

这是我的快速configuration代码: var server = express() .use(express.cookieParser()) .use(express.session({secret: buffer.toString('hex')})) .use(express.bodyParser()) .use(express.static('./../')); server.use(server.router); 最后的.use不像其他的那样被束缚,这真是令人烦恼。 我怎样才能充分链接我的Express中间件定义?

无法find模块快递 – 在Windows中

我在Windows控制台上使用“npm install -g express”,但是当我尝试“node app.js”时,显示错误“找不到模块expression式”,我设置了环境variables“NODE_PATH”发生,我需要你的帮助,谢谢!

明确解决“阻止代码”?

我正在从Node Beginner Book和随后的电子书购买中学习node.js。 在这本书中,Manuel Kiessling解释说,像这样的一行代码: fs.readFileSync(blah); 将阻止整个节点进程和所有请求进来。这对于多用户网站来说真是太糟糕了! 这就是基斯林使用的例子: exec("ls -lah", function( error, stdout, stderr ) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write(stdout); response.end(); }); 这是欺骗我的代码。 他说ls -lah很容易被find / -name "*"或者数据库查找等更耗时的操作所取代。 我认为昂贵的阻塞操作会以某种方式明确地在后台运行,因为asynchronouscallback。 所以我必须用这个代码来testing我的理论: var http = require("http"); var url = require("url"); badSleep = function(ms) { var now = new Date(); var finishAtDate = now.getTime() + ms; console.log("CPU burning […]

在nodejs中通过url获取哈希

我必须重置一个由bcrypt生成的散列密码… hash = $2a$11$Ro/Y5GnkI6v1DkewwZAcBeZY7Q2a9872NUGDuXXes4J5SWfEQGHvG 问题是哈希有一个斜杠…所以在我的路由器 app.get('/getHash/:hash',routes.getResetHash); 我得到一个404错误! 我认为问题是$ Ro和Y5G之间的斜线,因为哈希尝试像这样search一个url app.get('/getHash/$2a$11$Ro/Y5GnkI6v1DkewwZAcBeZY7Q2a9872NUGDuXXes4J5SWfEQGHvG'….. 我如何stringify散列…?

Nodejs / Express – '标题'不能渲染

我正在通过Sams“24小时内的Node.js”工作。 第8章给我困难(超过一个小时)! 示例07允许程序员创build一个页面,用户可以创build一个存储在MongoDb中的任务列表。 代码使用Express和Jade。 遵循指示一切正常…除了我注意到'标题'不是渲染,而是我得到一个通用的标题,路线的目录path。 我的问题是为什么? 我想我正确使用res.render,翡翠索引/布局文件同意作者的(检查https://github.com/shapeshed/nodejsbook.io )。 更新:因为它看起来像layout.jade被忽略,我删除它。 没有错误导致问题依然存在。 为什么/如何可以忽略layout.jade? **结论**:'24小时内的Node.js'假设为Express 2。然而,在本书的安装说明中安装了Express 3,因此存在一些困难(下面的补救措施)。 请注意,本书的第8章介绍的是Node.js / Mongodb / Jade / Flash之后的最简单的介绍Jade(第6章),而不是Flash。 除非您已经是一个经验丰富的前端开发人员,否则需要一个多小时。 目录结构是: \connect_to_mongo | |- \node_modules |- \public |- \routes |- \views | |- \tasks | | |- index.jade | | |- new.jade | |- index.jade | |- layout.jade |- app.js |- package.json app.js包含: […]

在PUT中避免使用Mongo和Express进行额外的查询

我正在用Mongoose / Express更新Mongo中的logging: app.put('/loggedIn/:id', function(req, res) { if (req.user._id == req.params.id) { User.update({ _id: req.user._id }, { $set: { interests: req.body.interests } }, function(err, num) { if (err) return err; User.findById(req.user._id, '_id username interests', function(err, user) { if (err) return; res.json(user); }); }); } else { console.log('fail'); } }); 我怎样才能避免在update()的callback中做第二个查询,似乎很多只是返回新的更新的文档。

Intereting Posts