如何在Expressjs / nodejs中启动函数(Setup方法)

我希望我的工作服务器在启动后立即从父服务器获取任务,并为未完成的任务保持ping。 鉴于Nodejs是一个事件驱动,我如何让我的快递服务器rest呼叫服务器,开始后立即开始工作? 在某种程度上,我要求在Nodejs中设置方法。

有没有等效的asynchronous库,但对于node.js的child_processes

在节点中stream行的asynchronous库在处理asynchronous函数的复杂控制结构方面做了很多工作。 例如,假设我有一个银行帐户ID的集合,我想从一个API中检索余额,然后对余额进行求和。 我可以通过做这样的事情来实现asynchronous: var accountIds = [0001,0002,0003,0004,0005,0006] async.mapLimit(accountIds, 3, function fetchBalance(accountID, cbk) { var balanceURL = "http://someapi.com/account/balance/" + accountID; get(balanceURL, cbk); }, function end(err, balances) { if (err) { console.err(err); } console.log(sum(balances)); } ); 这使我不必编写pipe道,以跟踪同时分派多less个asynchronous函数,确保所有函数最终完成,跟踪错误等。另外,它在节点中工作良好,因为I / O(以networking请求)是这个程序的限制因素。 但是,让我们设想一下,不是有单独的任务是I / O绑定的,我们有单独的CPU绑定任务。 asynchronous不会给我任何真正的性能好处,因为node.js只会运行一个主线程。 在节点中并行处理这种工作负载的一种解决scheme可能是使用child_process库并生成一堆工作进程来处理CPU绑定的工作。 我的问题是,是否有一个库可以处理这些工作stream的pipe道/协调,如asynchronous为I / O绑定,asynchronousfunction? 如果没有,这是否值得写? 我认为这可能是一个有趣的练习。

在node.js openshift安装程序的index.html中附加静态文件

我想设置一个node.js后端来为我正在构build的应用程序提供服务。 我正在使用openshift,设置进行得很好,我有一个基本的index.html显示正常。 但是,当我试图添加我的CSS和JS文件,我不能。 <link rel="stylesheet" type="text/css" href="css/style.css"> 我发现这个页面,我遇到了同样的问题,没有解决scheme。 https://www.openshift.com/forums/openshift/problem-linking-css-and-js-in-my-nodejs-app

渐进式增强 – Node.js,Backbone.js

node.js服务器有两个angular色: 具有前缀/ api的路由上的RESTFul API 呈现其他路线上的网页(/ /计划/function/条款…) 目前,我的所有页面都会显示一个“加载页面…”,与Backbone.router启动时取代DOM的Backbone应用程序结合在一起。 我想在用户到达一个页面的时候在服务器端build立网站页面,当用户在网站上浏览时让Backbone处理导航的下一个部分。 我知道如何在服务器端但在客户端执行加载已经构build的DOM的页面时,Backbone.router加载并replaceDOM,因为它不知道视图已经预加载。 如何解决它的客户端? 码: 路由器: http : //pastebin.com/aUuXaVm9 主页视图: http : //pastebin.com/qS1tHUfq 术语视图: http : //pastebin.com/et1mrbLK 更新:新的代码: https : //gist.github.com/mathieug/d50c861e63dd647f1c2b 现在我需要在第一次加载时调用runSlider方法。

Raspberry-pi mqttc.publish()在20个条目后出现节点红色溢出

我正在使用我的Python代码通过mqttc发布消息到节点红色。 问题是在20 mqttc发布之后,数据不会发布到node-red。 这里是我用来发布到node-red的python代码: mqttc.connect("nodered&mqtt_server_ip",1883) i=1 while True: i=i+1 mqttc.publish("sensor",i,1) time.sleep(1) 我也试过: i=1 while True: mqttc.connect("nodered&mqtt_server_ip",1883) i=i+1 mqttc.publish("sensor",i,1) mqttc.disconnect() time.sleep(1) 无论如何,代码发布到节点红色的前20个值,然后停止。 我的节点红色工作stream程如下。

无法用Express + jade + angular查找视图

像我之前这么多,我得到以下错误: Failed to lookup view "/partials/test" in views directory "/home/aveline/git/multivision/server/views" 由于我使用Jade,所以我的模板通过app.get(这是我的server.js文件)呈现: var express = require('express'), stylus = require('stylus'), logger = require('morgan'), bodyParser = require('body-parser'); var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development'; var app = express(); function compile(str, path){ return stylus(str).set('filename', path); } app.set('views', __dirname + '/server/views'); app.set('view engine','jade'); app.use(logger('dev')); app.use(bodyParser()); app.use(stylus.middleware( { src: __dirname […]

NodeJS JavaScript循环改变内容

我有以下代码迭代一个缓冲区寻找一个数据包结束标记。 在这个Buffer对象中可能有几个数据包,所以我使用数据包标记来查找数据,处理数据,然后通过切片缓冲区移动到下一个数据包。 但是我丢失了数据包,因为我在for循环中的条件是buffer.length,缓冲区长度正在变化(越来越短),但是i值始终在增加! 有关我如何解决这个问题的任何想法? bufferFragment是捕获部分数据包并将它们附加到下一个数据包的开头。 这部分工作。 for (var i = 0; i < buffer.length; i++) { if (buffer[i] == 16 && buffer[i + 1] == 3) { dataPacket = buffer.slice(0,i+4); parseData(dataPacket); buffer = buffer.slice(i+4); } else { bufferFragment = buffer; } } UPDATE 看起来,在某些情况下,当循环时间变长时,变得贪婪并捕获比应该更多的数据。 这是一个完整的testing脚本( http://runnable.com/U75ce4esNHFj7028 ) var testBufferText = "100207b097a5085da120f30000461003e39410020736e7bb085d4952890000011003a9401002070c8a1f094ca120f394743e10038907100207a41c22095d4008de0000011003437e1002058e535109a0000a1a9b580000000000a963bf10035c45100207d49681095d4952890000011003827b10020b012447505654472c2c542c2c4d2c302e3130392c4e2c302e3230312c4b2c412a32380d0a10032a621002073e36c3095da120f300004610036e461002072297e7095d49528900000110038c5f1002017866350a8d40622d588135b07db35d000000100305ce1002070c673c0a5da120f30000461003fc331002071c21950a0d5aa29a00fc711003165e10"; var testBuffer = new […]

gulp-sass错误:pipe道中未处理的stream错误

我正在使用gulp-sass,并且出现以下错误: ESL@eslmbp /Applications/MAMP/htdocs/craigpomranz[master*]$ gulp sass [17:54:53] Using gulpfile /Applications/MAMP/htdocs/craigpomranz/gulpfile.js [17:54:53] Starting 'sass'… stream.js:94 throw er; // Unhandled stream error in pipe. ^ Error in plugin 'gulp-sass' /Applications/MAMP/htdocs/craigpomranz/wp-content/themes/craig/scss/partials/base:13: error: error reading values after 'xsmall' at opts.error (/Applications/MAMP/htdocs/craigpomranz/node_modules/gulp-sass/index.js:67:17) at onError (/Applications/MAMP/htdocs/craigpomranz/node_modules/gulp-sass/node_modules/node-sass/sass.js:73:16) 这是我的gulpfile.js: // Include gulp var gulp = require('gulp'); // Include Our Plugins var jshint = require('gulp-jshint'); […]

如何编写用于路由的多行path?

有时路由path太长,所以我想要path显示在多行为可读性。 我知道通常一个多行string是这样写的: var str = 'hello \ world \ hi; 但是,这在express.js路由中不起作用。 router.route('/:hello/ \ :world/ \ :hi').get(…); 但是这个工作: router.route('/:hello/:world/:hi').get(…); 有任何想法吗?

使用nodejs,grunt或gulp合并文件夹的最佳方法

我有两个文件夹,我只是想合并它们(当存在时用ExtendedFolder覆盖BaseFolder文件) 例: BaseFolder —main.js —test.js ExtendedFolder —main.js 预期结果: ResultFolder —main.js (from ExtendedFolder) —test.js (from BaseFolder) 我问过类似的问题,但没有一个令人满意的答案: Grunt。 以编程方式将并行文件夹中的相应文件与concat合并