Articles of node.js

Nodemon在Docker环境中不起作用

我正在用无花果来构buildNodeJS dev-env。 当我使用nodemon来监视server.js时,更改server.js将不会重新启动服务器。 CMD ["nodemon", "/nodeapp/server.js"] 但是,当我从节点更改为主pipe,然后它的工作! CMD ["supervisor", "/nodeapp/server.js"] 有谁知道问题在哪里? 更多信息如下: 我的无花果文件夹结构 app/server.js package.json node_modules/ fig.yml Dockerfile fig.yml: nodejs: build: . ports: – "8080:8080" Dockerfile: RUN apt-get update –fix-missing RUN rm /bin/sh && ln -s /bin/bash /bin/sh # NVM RUN curl -sL https://deb.nodesource.com/setup | sudo bash – && \ apt-get install -y nodejs VOLUME […]

Expressjs – 使用中间件处理错误

我正在构build一个API(使用Expressjs v4),通常我已经处理了路由中的错误,而不是使用中间件。 例如: router.use('/', function(req, res, next) { … if (err) return res.status(500).send({type: "serverError", message: "Something has gone wrong on our end."}); } 我现在意识到中间件是“走的路”。 我在这里看到了Expressjs站点上相当有限的文档: http ://expressjs.com/guide/error-handling.html,但仍然不确定一些事情。 我已经在server.js添加了: function errorHandler(err, req, res, next) { } 但我应该如何处理不同types的错误(400,404,500等)? 每当发生错误时,我发现自己正在写3行代码: //A route var err = new Error(); err.status = 404; return next(err); 我可以使用以下方式访问状态: function errorHandler(err, req, res, next) […]

用户pipe理节点js用express,mongodb作为服务器数据库

寻找将用户pipe理添加到我的网站的方法。 网站:使用Node.js&Express,使用Express创build初始项目时, app.js文件包含以下行: app.use('/', routes); app.use('/users', users); 另外,在routes文件夹下创build一个users.js文件。 我的问题是如何pipe理用户,强制login,并为普通用户/pipe理员用户显示不同的视图。 我希望find一个简单的例子/教程。 存储:使用MongoDB&mongoose,我注意到数据库内置有Users文件夹。 我想在MongoDB上保存用户数据(用户名+密码+首选项)。 有什么办法做到这一点?

NodeJS最佳实践:stream量控制错误?

在Node.js中,我应该使用错误进行stream量控制,还是应该使用它们更像是exception? 我正在编写身份validation控制器和Sails.js中的一些unit testing,目前,我的注册方法检查是否存在具有相同用户名的用户。 如果一个用户已经存在用户名,我的模型方法用一个新的Error对象调用它的callback参数,如下所示: 模型: exists: function (options, cb) { User.findOne({ where: { username: typeof options === 'Object' && options.username ? options.username : options }, }).exec(function (err, user) { if (err) return cb(err); if (user) return cb(new Error("A user with that username already exists.")); cb(null, !!user); }); }, 控制器: User.exists(req.body.user.username, function (err, exists) { if […]

Heroku为node.js工作

我从Heroku开始,我有一个Web应用程序,有一部分,需要每周运行一次(星期一最好)。 我一直在读关于工人的东西: 在这里 , 在这里 , 在这里 …但我仍然有许多疑问: 1)这个工人在没有严格控制的背景下运行,不能按计划每周运行一次。 还是我错了? 如果我错了,我该如何安排呢? 2)为了使他们工作,我到底需要做什么? types web: node webApp.js worker: node worker.js 在Procfile中(其中worker.js是程序的一部分,每周只需运行一次)。 这就是全部? 没有其他的?? 太简单?? 3)最后一个…但最重要的。 “金钱的鳞次栉比”……一个工友和一个工人一样,所以如果你有一个工作站在网上,你需要为工人另外购买一个工具。 而在价格列表中,额外的代价是34.5 $(27.87€)。 它不便宜…所以我想知道我是否正确,如果你想要经营一个工人,是否有必要购买一台测功机?

我如何解决这个消息“你真的不认为你可以通过npm安装Ruby,是吗?

我试图在我的Mac OSX Yosemite机器上安装自制软件。 当我尝试遵循传统的安装过程时: $ ruby​​ -e“$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install )” 我一直在terminal上收到消息“你真的没有想到你可以通过npm安装Ruby,是吗? 据我所知,Yosemite在PATH中安装了Ruby 2.0。 如果是这样,为什么我不断收到这个消息,我该如何安装Ruby和Homebrew。 我在网上查了一些例子,但是安装Homebrew的每个例子都需要ruby,每个安装Ruby的例子都需要Homebrew。 SMH,为什么不给我一个我需要做的消息,而不是一个废话的喜剧消息呢?

是否有可能为node.js导入一个Java库

我有一个nodejs应用程序,有一些昂贵的计算。 我正在考虑在java中做这个部分,所以我可以更容易地利用线程和math库。 是否有一个简单的方法让nodejs与外部java库进行交谈? java库将包含一个经常调用javascript函数的循环。 由于这两个库不断交叉(而不是打包整个任务,将其发送给jvm,然后得到结果),我会看到性能大打折扣吗?

Node.js与快速抛出错误与下一个(错误)

有人可以在适当的时候阐述一下node.js Express应用程序抛出如下这样的错误: throw new Error('my error'); 或通过通常标记为“next”的callback来传递此错误,如下所示: next(error); 你能解释一下他们每个人在快速应用的情况下会做什么? 例如,下面是一个处理URL参数的函数: app.param('lineup_id', function (req, res, next, lineup_id) { // typically we might sanity check that user_id is of the right format if (lineup_id == null) { console.log('null lineup_id'); req.lineup = null; return next(new Error("lineup_id is null")); } var user_id = app.getMainUser()._id; var Lineup = app.mongooseModels.LineupModel.getNewLineup(app.system_db(), user_id); […]

$ addToSet一个对象到一个数组在mongoose

我有一个存储一些产品文件的集合。 在文档中,有一个数组evaluation来存储用户对产品的价格评估对象。 这里是一个用户对象的例子: var data = {user_id:90,price:400} 任何人都可以告诉我,如果有可能在evaluation数组上做一个“插入重复更新”? 我已经尝试了$addToSet ,但是当一个对象被推入evaluation ,有一个_id属性被添加到用户对象,即使我没有在模型中,像这样: { "_id": 54b13f52604fc5d242d4aa68, "__v": NumberInt(0), "evaluation": [ { "price": NumberInt(14616), "user_id": NumberInt(91), "_id": ObjectId("54b13f5e604fc5d242d4aa6b") // Why is it added? }, { "price": NumberInt(16211), "user_id": NumberInt(92), "_id": ObjectId("54b140d1604fc5d242d4aa74") // } ], "product": [ { "title": "ABC", "model_id": "382", "id": "513", "category": "1", "src": "xxx.jpg" } […]

为什么响应已closures而未完成?

我在函数readFile中的node.js中有以下代码: res.setHeader("content-type", 'application/octet-stream'); res.setHeader("Content-Disposition", 'attachment; filename="' + 'original' + '"' + "; filename*=UTF-8''" + 'original' + ""); var readStream; var exists = fs.existsSync(fullPath); if (exists) { callback(true); readStream = fs.createReadStream(fullPath); readStream.pipe(res); } else { callback(false); return; } res.on('finish', function(){ logger.info('response ending'); readStream.close(); }) res.on('close', function(){ logger.info('response close'); readStream.close(); }) res.on('error', function(error){ logger.info(error); readStream.close(); }) 出于某种原因,一些请求发出close事件,而其他的finish […]