Tag: 节点光纤

meteor:在打字中写meteor法时,找不到模块纤维/未来

我用angular2使用typecript es6和我遇到这个错误,同时为asynchronous函数写一个meteor方法。 我在插入查询中遇到了一个同步问题,因为当名称相同时,它在插入时不提供给我一个错误。 所以我决定使用光纤和未来,但打字稿不断给我一个错误,它无法find纤维/未来的模块。 我已经试过meteornpm安装光纤,meteornpm安装未来,meteor添加ostrio:neo4jdriver@1.0.2-纤维,但没有任何工作。 如果有任何解决scheme,请告诉我。 如果有其他方法可以用来解决这个问题,请告诉我。 import { Emails } from '../collections/emails.collection'; import { check } from 'meteor/check'; import { Meteor } from 'meteor/meteor'; import Future from 'fibers/future'; Meteor.methods({ loadEmailTemp: function(tempn: string){ let temp = Emails.findOne({tempname: tempn}); return temp; }, getAllTemplates: function() { let temps = Emails.find({}).fetch(); return temps; }, newTemplate: function(tempn: string) { […]

如何在Node.js中进行纤维等待?

我是Node.js的新手,并意识到它与客户端JavaScript的巨大差异之一就是一切都是asynchronous的。 为了试图解决这个问题,我试图使用fibrous把我的代码转换成更实用的编程风格,但是有一些问题: 我怎样才能使下面的纤维代码工作? 例如,我想要下面的代码打印1,2,3,但它打印1,3,2 function test() { var fibrous = require('fibrous'); var fs = require('fs'); fibrous.run(function() { var data = fs.sync.readFile('/etc/passwd'); console.log('2'); }); } function runTest() { console.log('1'); test(); console.log('3'); } runTest(); // This prints 1,3,2 to the console, not 1,2,3 as I'd like. 在一个真实的用例中,上面的例程将会包装一个运行asynchronous的DB方法,并且可以编写如下的东西: var dbTable = new dbTableWrapper(); var data = dbTable.getData(); /* […]

节点光纤会打破节点域吗?

我目前使用节点光纤来编写同步服务器端代码。 我主要通过try-catch块进行error handling,但总是有可能在外部库或asynchronous代码的其他小部分中发生错误。 我正在考虑使用新的域function来尝试将这些错误路由到正确的请求,我想知道是否有人尝试在同一个应用程序中使用光纤和域。 根据域在幕后的工作方式,我可以想象光纤可能会破坏一些假设,将asynchronous代码与正确的域关联起来。 具体来说,我担心域可能会做类似于下面的事情来跟踪上下文,这可能会破坏纤维,因为纤维破坏了一个函数将在任何其他代码运行之前运行完成的保证: run_in_domain = function(to_run) { var old_domain = global_domain; global_domain = new_domain(); try { to_run(); } finally { global_domain = old_domain; } } 有没有人成功或失败,试图让光纤和域一起玩?

节点光纤的运行与产量有什么区别

我找不到任何好的文档(或者有关SO的任何问题),这些文档解释了yield和run确切程度。 我无法findasynchronous方法将如何使用Fibers/futures来返回值。 例如(代码不是语法正确的),我怎样才能让这个函数同步返回response function findData( param ) { var fiber = Fiber( function(){ var currentFiber = Fiber.current; Model.findOne({ "param" : param}, function (err, data) { response = { err : err, data : data }; }); }); return fiber; } 就像是 var value = findData("1"); 这个Model是我从Mongoose模式类获得的一个对象(不知道它是否相关)。 提前致谢。

如何使用Node.js Fibers运行代码

我有一个关于Nodejs光纤的问题(这对我来说是绝对新的)…我有Nodejs光纤的这个教程, http: //bjouhier.wordpress.com/2012/03/11/fibers-and-threads-in- node-js-what-for / ,这里有一个例子 var fiber = Fiber.current; db.connect(function(err, conn) { if (err) return fiber.throwInto(err); fiber.run(conn); }); // Next line will yield until fiber.throwInto // or fiber.run are called var c = Fiber.yield(); // If fiber.throwInto was called we don't reach this point // because the previous line throws. // So we only […]

Node.js这个光纤已经在运行

我有一个关于在Node.js中使用光纤的问题。 以下代码失败,并显示错误消息: 这光纤已经在运行 上train程序。 var f = Fiber(function() { var fiber = Fiber.current; utils.enseeds(seeds, function(err, response){ fiber.run(response) }) var myseeds = Fiber.yield() utils.train(train, test, myseeds, function(err, response){ fiber.run(response) }) var stats = Fiber.yield() }) f.run(); 出于某种原因,它不喜欢我的myseeds ,如果我改变我的myseeds在train上的东西,它的作品。 为什么会发生?

meteor内部:光纤如何工作?

meteor大量使用光纤,每个客户的请求都在一个单独的光纤中运行,但是这实际上是做什么的? 从阅读各地纤维的好处看来,它们可以让你以同步的方式编写asynchronous代码。 这是他们所做的一切吗? 另外,this.unblock()如何在方法中工作? 该文档说:“在Meteor中,您的服务器代码在每个请求的单个线程中运行,而不是以Node的典型asynchronouscallback方式运行。 纤维如何模仿线程,而不是实际上是一个线程? 如果一个Meteor方法执行一个长时间的计算,它不会阻塞事件循环?

节点光纤/未来callback与多个参数

期货如何处理有多个参数的callback? 这对于我可以用于未来的每一次使用都是至关重要的。 github的例子显示它只处理一个参数。 Github自述文件的例子是 var fileNames = readdir('.').wait(); 但是怎么样的一个MySQL调用 client.query("select * from employees", function(err, results, fields) { // callback function returns employees array callback(results); }); 如何使用期货wait()方法得到这三个( err , results和fields )? 编辑 实验告诉我,callback的第一个参数,在这种情况下, err总是作为error handling,如果值是truthy,则抛出。 第二个参数被分配。 任何进一步的论据都被我忽略了。

Nodejs(同步)无法find光纤二进制文件

我见过类似的问题,但没有真正的解决scheme,但我工作(大多数用户只是重新安装光纤或meteor(我不使用meteor))。 我已经将nodejs模块Sync添加到了我的nodejs 0.12.6项目中。 它的依赖是使用Sync自动安装的Fibers模块。 现在我想要通过require加载同步,但是失败并显示消息 … /win32-x64-v8-4.3/fibers.node未find 这是正确的:在同步/ node_modules /纤维/ bin /没有目录名为win32-x64-v8- 4.3,只有win32-x64-v8-4.2和重命名没有解决问题(本来是太简单了).. 🙈 我怎么解决这个问题? 这怎么可能发生? 最后一个数字(4.3)的含义是什么? 我想这是Windows,64位,Javascript V8引擎,然后呢? 纤维版本? 任何想法或提示? 更新: 我试图升级节点到0.12.6,但没有任何改变。 我发现4.3是什么,这是V8版本。 那么,当用电子运行我的应用程序时,它是v8:“4.3.61.21” 。 用节点检查版本时,是3.28。 所以这可能是电子“故障”? 更新#2: 好吧,我发现电子是基于io.js而不是节点。 这解释了不同的V8版本。 但仍然没有解决scheme。 使用最新的io.js(2.3.3)安装光纤时,它testing4.2二进制,但电子需要4.3 更新#3: 即使使用与电子版本相同的io.js 2.3.1版本,也只安装了4.2版本。 更新#4: 现在,我尝试了http://electron.atom.io/docs/v0.27.0/tutorial/using-native-node-modules/ (电子版本为0.29.1)中描述的所有三种方法 – 仍然没有解决scheme。 v8-4.3没有任何二进制文件,只有v8-4.2。 🙁 解: 看到我的答案在下面。 🙂

追踪meteor/节点光纤中的堆栈溢出

我现在看到了这个崩溃,对节点光纤基础结构不熟悉,不知道从哪里开始解释错误或者检测代码。 Meteor server running on: http://localhost:3000/ W202407-10:06:05.740(-8)? (STDERR) /Users/dauser/.meteor/tools/0b2f28e18b/lib/node_modules/fibers/future.js:173 W202407-10:06:07.363(-8)? (STDERR) throw(ex); W202407-10:06:07.363(-8)? (STDERR) ^ W202407-10:06:07.363(-8)? (STDERR) RangeError: Maximum call stack size exceeded => Exited with code: 8 => Meteor server restarted 据我了解,有些事情反复激烈,服务器堆栈炸毁,崩溃。 不幸的是,我不知道这个违规的function在哪里 – 我看着我的Deps.autorun呼叫(目前只有一个),似乎并不麻烦。 我的代码没有用显式recursion实现,我没有任何理由怀疑大对象传递。 显然,我当然不确定。 我真的只是在寻找关于如何对代码进行testing以向我展示事情失控的build议。 由于meteor在幕后做了大量的工作,如果有人能给我几个关于在哪里看的指针,那将是非常有用的。 刚刚回到这个位置,在哪里看,我还是很迷茫。 这build议更新到节点0.11.x会给我更多的信息,但这样做似乎并没有添加更多的细节,当它崩溃。 崩溃发生在任何页面交互之后 – 也就是服务器启动并运行正常,但是如果我在浏览器中重新加载或者与页面本身进行交互,BOOM! 受欢迎的需求,这里是服务器代码: isAuthorized = () -> console.log "checking authorization" this.userId == […]