标签: ecmascript-7

如何使用mocha/chai/chai-as-promised测试ES7异步函数

我有以下功能来测试:

// ...
const local = new WeakMap();

export default class User {

  // ...

  async password(password) {
    if (!password) return local.get(this).get('hash'); // remove this for security reasons!
    if (password.length < 6) throw new Error('New password must be at least 6 characters long');
    if (!password.match(passwordPattern)) throw new Error(`New password must match ${passwordPattern}`);
    local.get(this).set('hash', await Password.hash(password));
  }

  // ...

}
Run Code Online (Sandbox Code Playgroud)

现在我想用mocha,chaichai-as- promise来测试这个函数做这个测试用例:

import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';

import User from '../../../server/User';

chai.use(chaiAsPromised); …
Run Code Online (Sandbox Code Playgroud)

javascript testing bdd async-await ecmascript-7

5
推荐指数
1
解决办法
3205
查看次数

Babel可以编译为"node --harmony"而不是ES5吗?

我正在尝试编译一个Koa应用程序,并且Koa有断言检查以确保我将生成器函数作为中间件传递.但是,为了与前端代码保持一致,我想使用Babel从ES7编译我的服务器端代码.

是否有可能针对节点和谐而不是ES5?我没有在选项中看到任何有希望的东西,但选择目标似乎是能够使用编译器的标准事物.

更新

黑名单巴贝尔的再生器变换似乎没有效果,即使我正在使用stage: 1.

index.js:

require( "babel/register" )({
    sourceMaps: "inline",
    stage: 1,
    blacklist: [ "regenerator" ],
    optional: [ "asyncToGenerator" ]
});

var app = require( "./src/server" );

app.listen( process.env.port || 3000 );
Run Code Online (Sandbox Code Playgroud)

SRC/server.js:

import koa from "koa";
import router from "koa-router";

router.get( "/", function *( next ) {
    this.body = "Hi!";
});

let app = koa();
app.use( router() );

export default app;
Run Code Online (Sandbox Code Playgroud)

执行: node --harmony index.js

node --version
v0.12.4
Run Code Online (Sandbox Code Playgroud)

node.js babeljs ecmascript-7

5
推荐指数
1
解决办法
2201
查看次数

Angular2 DI与ES2016装饰器?

这是我在github上最接近的

我的服务是

@Injectable() export class TodoService {}

但我不确定如何使用ES2016装饰器将其注入我的组件.它甚至是可能的,还是装饰器特定于原型?我知道TS有一个emitDecoratorMetadata选择.

ecmascript-7 angular

5
推荐指数
1
解决办法
261
查看次数

使用Babel在ES6(7?)中避免使用.bind

我在我的JSX中有这个:

<Options options={options} onOptionSelect={this.onOptionSelect.bind(this)} />
Run Code Online (Sandbox Code Playgroud)

但是,我发誓我已经看到了一些幻想,否定了.bind将回调方法传递给子React组件时的需要,我是对的吗?

ecmascript-6 reactjs babeljs ecmascript-7

5
推荐指数
1
解决办法
955
查看次数

浅拷贝对象遗漏ES6/ES7中的一个或多个属性?

这就是我一直在做的事情:

var props = { id: 1, name: 'test', children: [] }

//copy props but leave children out
var newProps = { ...props }
delete newProps.children

console.log(newProps) // { id: 1, name: 'test' }
Run Code Online (Sandbox Code Playgroud)

有更清洁,更简单的方法吗?

javascript ecmascript-harmony ecmascript-6 babeljs ecmascript-7

5
推荐指数
1
解决办法
2199
查看次数

使用ES7 async/await与node,webpack和babel-loader时出错

我试图使用JavaScript语法ES7采用具有的WebPack和巴贝尔装载机(ES2015 + 0级的预置)的node.js服务器上.我已经让它与babel-node一起工作但是当我运行webpack时,我在async关键字上得到以下错误(9:22在async关键字之后):

ERROR in ./src/server.js Module parse failed: C:\dev\node-async-sample\src\server.js 
Unexpected token (9:22) You may need an appropriate loader to handle this file type. 
SyntaxError: Unexpected token (9:22)
Run Code Online (Sandbox Code Playgroud)

我把代码放在github上的https://github.com/qubitron/node-async-sample,有关如何使其工作的任何想法?

以下是src/server.js的相关代码段:

import express from 'express';
import http from 'request-promise';

let server = express();

server.get('/', async function(request, response) {
    let result = await http('http://www.google.com');
    response.send(result);
});
Run Code Online (Sandbox Code Playgroud)

.babelrc:

{
  "presets": [
    "es2015",
    "node5",
    "stage-0"
  ],
  "plugins": [
    "transform-runtime"
  ]
}
Run Code Online (Sandbox Code Playgroud)

和webpack.config.js:

module.exports = {
  entry: [
    'babel-polyfill',
    './src/server.js'
  ],
  output: { …
Run Code Online (Sandbox Code Playgroud)

javascript babel node.js webpack ecmascript-7

5
推荐指数
1
解决办法
1354
查看次数

ES2015 +嵌套休息说明

我正在检查node.green并在解构,赋值 > 嵌套休息时使用以下示例函数:

function f() {
  var a = [1, 2, 3], first, last;
  [first, ...[a[2], last]] = a;
  return first === 1 && last === 3 && (a + "") === "1,2,2";
}

console.log(f())
Run Code Online (Sandbox Code Playgroud)

现在,我理解解构,但我无法弄清楚为什么要a改写[1, 2, 2]

[...[a[2], last]] = a;回来了[1, 2, 1]

javascript destructuring ecmascript-7

5
推荐指数
1
解决办法
143
查看次数

ES6和ES7的特点是没有babel在反应原生中进行转换?

我很乐意使用Javascript ES6和ES7语法(特别是async/await,我的新朋友),而无需转换.这甚至是一种选择吗?它应该是一个选择吗?

这一切都取决于子问题:在Android和iOS上,Javascript引擎做了什么反应 - 本机有效使用?它取自设备本身?(在这种情况下,转换是唯一的选择......)或者它是由React Native提供的吗?

async-await ecmascript-6 react-native ecmascript-7 ecmascript-2017

5
推荐指数
1
解决办法
383
查看次数

TypeScript:类组成

基于MPJ的这段出色的“ 继承中合成”视频,我一直试图在TypeScript中制定合成。我想组成,而不是对象或工厂函数。到目前为止,这是我的努力(在lodash的帮助):

class Barker {
  constructor(private state) {}

  bark() {
    console.log(`Woof, I am ${this.state.name}`);
  }
}

class Driver {
  constructor(private state) {}

  drive() {
    this.state.position = this.state.position + this.state.speed;
  }
}

class Killer {
  constructor(private state) {}

  kill() {
    console.log(`Burn the ${this.state.prey}`);
  }
}

class MurderRobotDog {
  constructor(private state) {
    return _.assignIn(
      {},
      new Killer(state),
      new Driver(state),
      new Barker(state)
    );
  }
}

const metalhead = new MurderRobotDog({ 
  name: 'Metalhead', 
  position: 0, 
  speed: 100, …
Run Code Online (Sandbox Code Playgroud)

javascript class composition typescript ecmascript-7

5
推荐指数
2
解决办法
3969
查看次数

与Bambora进行支付交易时"未找到交易"

我正在实施Bambora 的Inline Checkout.授权步骤没有任何问题.但是当涉及到捕获付款时,我总是得到错误Transaction not found.

这就是我做的:

const options = {
    headers: { Authorization: `Basic ${ apiKey }` },
};
const { payload } = {
    amount
};
const { data } = await axios.post(`https://transaction-v1.api-eu.bambora.com/transactions/${ txnid }/capture`, payload, options);
Run Code Online (Sandbox Code Playgroud)

我也尝试过包含transactionoperations以下内容的请求:

const options = {
    headers: { Authorization: `Basic ${ apiKey }` },
};
const { payload } = {
    amount,
    transactionoperations: [{ id: txnid }],
};
const { data } = await axios.post(`https://transaction-v1.api-eu.bambora.com/transactions/${ txnid }/capture`, …
Run Code Online (Sandbox Code Playgroud)

javascript payment-gateway node.js ecmascript-7 bambora

5
推荐指数
1
解决办法
262
查看次数