问题标签 [node-fibers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 带有流星的 npm 包串行端口的光纤错误
我正在使用带有流星的 SerialPort npm 包。我使用 wrapAsync 列出串行端口,但我不知道如何使用 serialPort.on 方法。当我想在我的 Cars 集合中插入数据时出现错误:
Meteor 代码必须始终在 Fiber 中运行。尝试使用 Meteor.bindEnvironment 包装传递给非 Meteor 库的回调。
代码 :
azure - npm install -g fiber 在 Azure Web App 上失败
在https://portal.azure.com/上使用控制台
我怎样才能解决这个问题?这是所有的错误信息吗?
node.js - Nodejs(同步)找不到纤程二进制文件
我见过类似的问题,但还没有真正适合我的解决方案(大多数用户只是重新安装光纤或流星(我没有使用流星))。
我已将 nodejs 模块 Sync 添加到我的 nodejs 0.12.6 项目中。它的依赖项是使用 Sync 自动安装的 Fibers 模块。现在我想通过 require 加载 Sync,但它失败并显示消息
... /win32-x64-v8-4.3/fibers.node 未找到
这是正确的:在sync/node_modules/fibers/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'。用node查看版本时,是3.28。所以可能是电子“故障”?
更新#2:
- 好的,我发现电子基于 io.js 而不是节点。这解释了不同的 v8 版本。但仍然没有解决办法。使用最新的 io.js (2.3.3) 安装光纤时,它会测试 4.2 二进制文件,但电子需要 4.3 :(
更新#3:
- 即使使用与 electron 相同的 io.js 版本 2.3.1,它也只安装 4.2 二进制文件。
更新#4:
- 现在,我已经尝试了http://electron.atom.io/docs/v0.27.0/tutorial/using-native-node-modules/中描述的所有三种方法(电子版本为 0.29.1) - 仍然没有解决方案。v8-4.3 没有任何二进制文件,仍然只有 v8-4.2 的。:(
解决方案:
- 请看下面我的回答。:)
heroku - 将流星应用程序部署到heroku缺少光纤包后
添加数据库等后,我将 Meteor 应用程序部署到 heroku,当我尝试访问该应用程序时,我收到一条错误消息,提示服务器找不到名为“Fibers”的模块。这是什么意思?我从来没有安装过那个模块。
node.js - 无法为 Electron 生成 V8-4.3 node-fibers 二进制文件
好的,所以我有一个很好的捆绑Meteor应用程序,现在应该是 Node 可运行的。我正试图让它与Electron一起工作。我运行npm install
添加我的模块,一切正常,除了纤维创建一个名为 win32-x64-3.28 的文件夹,当我运行 Electron 时出现错误,Electron 需要 win32-x64-4.3 光纤二进制文件。我尝试使用 node-gyp 构建它并不断得到相同的结果。我使用的是 64 位 Windows 7、Node 12.7、npm 2.11.3、Electron 0.30.4 和 Fiber 1.0.5。
如何安装正确版本的光纤 win32-x64-4.3 以使 Electron 满意?
javascript - 使用 Future 使用异步调用正确处理 Meteor 错误
我想知道在使用异步方法时如何正确处理 Meteor 的错误。我尝试了以下方法,但是客户端回调的结果参数而不是错误参数中返回了错误。
服务器代码:
客户端代码:
正如我上面所说,当服务器端的 HTTP.get() 返回错误时,客户端事件中的“错误”始终未定义。我也尝试在服务器端替换future.return(error);
为future.throw(error);
,但这确实会在服务器端引发错误。客户端错误参数然后得到 500 服务器错误,尽管在服务器上抛出的错误是 401 未经授权的错误。
那么,是否可以正确使用 Fiber 的 Future 以便客户端回调接收与服务器回调相同的错误参数?
node.js - 流星内部结构:纤维是如何工作的?
Meteor 大量使用了光纤,每个客户端的请求都在单独的光纤中运行,但这实际上是做什么的呢?
从阅读中可以看出,fiber 的优势似乎在于它们让您可以以同步的方式编写异步代码。这就是他们所做的一切吗?
另外, this.unblock() 如何在方法中工作?文档说:“在 Meteor 中,您的服务器代码在每个请求中运行在一个线程中,而不是以 Node 典型的异步回调样式。”
纤维如何模拟线程,而不是真正的线程?如果 Meteor 方法执行长时间计算,它如何不阻塞事件循环?
mongodb - Meteor MongoDB 查询需要很长时间
我正在为我的一个项目使用流星。我有一个零星的问题,有时一两个查询需要很长时间。例如,以下日志取自 MongoDB 日志,其中每个块的最后一部分提到了查询所用的时间(以毫秒为单位)。
可以看出,第 4 条和第 5 条日志分别显示 14774 毫秒和 17163 毫秒,其他几乎比这些值小 14-17 倍。对于需要很长时间的查询,我只能看到IXSCAN
值从{ value: 1 }
变为。{ r.lid: 1 }
在谷歌搜索了一下之后,IXSCAN
我知道它选择了要扫描的索引。我有以下问题,
- 为什么为某些查询选择了错误的索引,尽管它们都是由相同的代码引发并且具有相同的查询属性?
- 有没有办法为这个查询强制索引(最好来自流星)
- 虽然与此无关,但为什么创建了许多连接(如每行 conn2XX 的开头所示)。我正在使用节点光纤来查询并行后台请求。有没有办法杀死这些连接?
[conn252] 查询 cdk.WLCV 查询:{ $query: { cid: "C1", uid: "W1", r.lid: "L12", value: { $gte: 1031, $lte: 1107 } }, orderby : { value: 1 } } planSummary: IXSCAN { value: 1 } ntoreturn:0 ntoskip:0 nscanned:59754 nscannedObjects:59754 keyUpdates:0 numYields:0 locks(micros) r:155165 nreturned:77 reslen:48530 155ms
[conn251] 查询 cdk.WLCV 查询:{ $query: { cid: "C2", uid: "W1", r.lid: "L12", value: { $gte: 1031, $lte: 1107 } }, orderby : { value: 1 } } planSummary: IXSCAN { value: 1 } ntoreturn:0 ntoskip:0 nscanned:59754 nscannedObjects:59754 keyUpdates:0 numYields:0 locks(micros) r:172445 nreturned:78 reslen:49160 172ms
[conn248] 查询 cdk.WLCV 查询:{ $query: { cid: "C3", uid: "W1", r.lid: "L12", value: { $gte: 1031, $lte: 1107 } }, orderby : { value: 1 } } planSummary: IXSCAN { value: 1 } ntoreturn:0 ntoskip:0 nscanned:59754 nscannedObjects:59754 keyUpdates:0 numYields:0 locks(micros) r:161176 nreturned:77 reslen:48222 161ms
[conn249] 查询 cdk.WLCV 查询:{ $query: { cid: "C4", uid: "W1", r.lid: "L12", value: { $gte: 1031, $lte: 1107 } }, orderby : { value: 1 } } planSummary: IXSCAN { r.lid: 1 } ntoreturn:0 ntoskip:0 nscanned:46147 nscannedObjects:46147 scanAndOrder:1 keyUpdates:0 numYields:11037 locks(micros) r:1384301 nreturned:77 reslen: 48684 14774ms`
[conn250] 查询 cdk.WLCV 查询:{ $query: { cid: "C5", uid: "W1", r.lid: "L12", value: { $gte: 1031, $lte: 1107 } }, orderby : { value: 1 } } planSummary: IXSCAN { r.lid: 1 } ntoreturn:0 ntoskip:0 nscanned:46147 nscannedObjects:46147 scanAndOrder:1 keyUpdates:0 numYields:9464 locks(micros) r:1904782 nreturned:77 reslen: 48761 17163ms
[conn249] 查询 cdk.WLCV 查询:{ $query: { cid: "C6", uid: "W1", r.lid: "L12", value: { $gte: 790, $lte: 940 } }, orderby : { value: 1 } } planSummary: IXSCAN { r.lid: 1 } cursorid:305719783659 ntoreturn:0 ntoskip:0 nscanned:46147 nscannedObjects:46147 scanAndOrder:1 keyUpdates:0 numYields:0 locks(micros) r:114383 nreturned: 101 reslen:63650 114ms`
[conn250] 查询 cdk.WLCV 查询:{ $query: { cid: "C7", uid: "W1", r.lid: "L12", value: { $gte: 790, $lte: 940 } }, orderby : { value: 1 } } planSummary: IXSCAN { r.lid: 1 } cursorid:305713399194 ntoreturn:0 ntoskip:0 nscanned:46147 nscannedObjects:46147 scanAndOrder:1 keyUpdates:0 numYields:0 locks(micros) r:105275 nreturned: 101 分辨率:63246 105 毫秒
[conn251] 查询 cdk.WLCV 查询:{ $query: { cid: "C8", uid: "W1", r.lid: "L12", value: { $gte: 790, $lte: 940 } }, orderby : { value: 1 } } planSummary: IXSCAN { r.lid: 1 } cursorid:306335307165 ntoreturn:0 ntoskip:0 nscanned:46147 nscannedObjects:46147 scanAndOrder:1 keyUpdates:0 numYields:0 locks(micros) r:134425 nreturned: 101 分辨率:63650 134 毫秒
[conn252] 查询 cdk.WLCV 查询:{ $query: { cid: "C9", uid: "W1", r.lid: "L12", value: { $gte: 790, $lte: 940 } }, orderby : { value: 1 } } planSummary: IXSCAN { r.lid: 1 } cursorid:306643211432 ntoreturn:0 ntoskip:0 nscanned:46147 nscannedObjects:46147 scanAndOrder:1 keyUpdates:0 numYields:0 locks(micros) r:143227 nreturned: 101 分辨率:63650 143 毫秒
以下是我从 mongo 控制台获得的数据库统计信息。
meteor - 部署到 Digital Ocean,Ubuntu 14.04 时出现 Meteor Up 错误
使用 Meteor Up 在 Digital Ocean 上将 Meteor 项目部署到 Ubuntu 14.04(内核:Ubuntu 14.04 x64 vmlinuz-3.13.0-57-generic)实例时遇到问题。
mup setup
运行良好,所以 mup.json 没有问题。
然后,当我跑步时,mup deploy
我得到:
我可以看到问题出在 Fibers 上,但不知道为什么会失败。
有任何想法吗?谢谢。
meteor - 当 Meteor.bindEnvironment 内的服务器出错时,无法在客户端捕获 Meteor.Error
在服务器代码中,我无法在客户端的Meteor.call
错误回调中得到错误,内部发生错误Meteor.bindEnvironment
。下面是要复制的示例代码
在服务器
在 Meteor 事件中的客户端中,
会话变量永远不会设置。任何帮助都会很棒。谢谢!