Tag: ecmascript 6

Node.js同步返回多个asynchronous收益的结果

我正在使用rethinkDB与node.js. 以下请求正常工作: function myFn () { return co(function *() { let query; query = yield r.db("my-db") .table("app") .filter(r.row("id").eq(id)) .run(conn); return query.toArray(); }); } 我想asynchronous返回多个yield的结果,但是下面的失败: function myFn () { return co(function *() { let query, query2; query = r.db("my-db") .table("app") .filter(r.row("id").eq(id)) .run(conn); query2 = r.db("my-db") .table("app") .filter(…) .run(conn); return yield {q1 : query, q2 : query2}; […]

如何使learnyounode#9杂耍asynchronous工作

我正在尝试通过nodechool的learnyounode。 这个问题和前面的问题(HTTP COLLECT)是一样的,你需要使用http.get()。 但是,这次您将获得三个URL作为前三个命令行参数。 您必须收集每个URL提供给您的完整内容并将其打印到控制台(stdout)。 您不需要打印出长度,只需将数据打印为string; 每个URL一行。 问题在于,你必须按照与作为命令行参数提供给你的URL相同的顺序打印出来。 这是我的代码: var bl = require('bl'); var http = require('http'); var urls = [process.argv[2], process.argv[3], process.argv[4]] var dataArray = []; var count = 0; for (var i = 0; i <= urls.length-1; i++) { http.get(urls[i], function(response){ response.setEncoding('utf8').pipe(bl(function (err, data) { dataArray[i] = data.toString(); count++; if (count==2){ dataArray.forEach(function(item){ console.log(item); […]

ECMA脚本2015(ES6)在没有标志的NodeJS上

根据这篇文章 ,许多ES6function(特别是模板文字,在forms上被称为“模板string”)是默认启用的。 下面是进入terminal: user@host: node > "test string: ${10+4}" 'test string: ${10+4}' 即使使用'–harmony'标志,模板文字也不会作为代码被执行,而是被当作string处理。 我的版本如下: user@host: node -v v5.7.0 任何build议将不胜感激。

修复这个未定义?

我的app.js是用es6标准编写的,我的问题是>如何使用这样的代码? $('img').each(() => { var title = $(this).attr('src'); titles.push(title); }); 我观察到节点编译这个代码: 'use strict'; $('img').each(function () { var title = $(undefined).attr('src'); titles.push(title); }); 编译“这个”到“未定义”,我该如何解决这个问题? thx提前;)

无法更新连接的用户数(Node.js和Socket.io)

用vanilla node.jstestingsocket.io,我正在做一个简单的应用程序来显示在线用户数量,使用窗口标题为简单起见。 它在服务器的控制台端很好地工作,但是当我打开一个新的选项卡时,它不会在客户端的浏览器上更新。 这里有什么问题? 代码如下: var html = ` <script src="/socket.io/socket.io.js"></script> <script> var socket = io(); socket.on('count updated', (data) => { //Worked on the current tab, didn't updating on the other tabs document.title = data + ' User(s) Online'; }); </script> `; var count = 0; var server = require('http').createServer((req, res) => { res.end(html); }); […]

导入目录的索引文件无法正常工作

application.js文件的下列内容报告“home”被导入的是未定义的。 import {home} from "./routes/index" console.log(JSON.stringify(home, null, 4)) index.js的内容如下: export * from "./home.js" home.js的内容如下: export const type = "GET" export const route = "/" export const middleware = []; export const action = function(req, res) { res.send("Testing custom routes"); } 目录结构的图片如下所示:

返回的express err对象不包含err.message

我已经问了另一个有关错误的问题。 不知道我是否应该编辑这个问题。 无论如何,下面的代码: app.use((err, req, res, next) => { res.status(err.status || 500); res.json({ message: err.message, err // this err object doens't have err.message property }); next(); }); 我不明白,如果这是一个节点的事情或expression的事情。 有人可以解释如何以及为什么发生这种情况? 返回时不应该包含err对象的所有属性? 目前我正在做这个来解决它: res.json({ err: Object.assign(err, { message: err.message }) });

我如何注释Flow的这个function

我有这个JS函数在我使用Flow( https://github.com/facebook/flow ) // @flow static promiseWrapper(fn, …args) { return new Promise( async function(resolve, reject) { try { await fn(…args); resolve(); } catch (e) { reject(e); } } ) } 我怎么去注释这个?

使用rewiretesting节点ES6模块 – function未定义

编辑:这是很快被有人指出rewire文件中显而易见的东西回答。 请注意,我将模块封装在IIFE中,因为我试图让节点停止在严格模式之外的块范围声明的抱怨。 而不是使用IIFE(严格模式),更简单的方法就是在你的节点命令上使用–use-strict标志: node –use-strict app.js 这样你就可以正常的在你的代码中使用ES6了,他们仍然可以通过rewire访问。 万岁! 我正在尝试testing我的节点ES6应用程序。 更具体地说,我试图testing一个模块中没有从模块中导出的function。 目前,我甚至不能在我的testing中定义这个函数。 我正在尝试使用rewire来testing这个。 我不知道这是否可能是严格模式或使用ES6的问题,但我似乎无法find任何提示解决scheme在线:( 任何帮助,将不胜感激! 这是我的模块: //myModule.js (function(){ 'use strict'; let myFunction = () => { return 'hello'; }; })(); 这是我的testing: //myModule.spec.js (function(){ 'use strict'; let rewire = require('rewire'); let myModule = rewire('./myModule.js'); describe('app', () => { it('should do something', () => { let func = […]

如何使用默认捕获和处理程序创buildPromise

我正在创build一个使用koa和babelasynchronous/等待的API 我的控制器函数中的每一个承诺看起来像这样 async function … { await Promise … .then(data => response function) .catch(err => err function) } 每个承诺都有完全相同的响应和错误function。 有没有办法让我自动地使用相同的then / catch解决每个承诺(就像promise的默认parsing函数一样)。 然后我的代码看起来像这样: async function … { await Promise … } 承诺会自动解决/捕获。