Tag: ecmascript 6

为什么transpile node.js后端代码?

我是es6新手,有两个问题 在es6中编写后端代码(node.js)真的需要传输吗? 如果没有必要进行转译 – 在服务器端运行es6是否有缺点 – 它会影响debugging吗?

模块参数覆盖函数参数

我是从module.exports我的生成器方法,但它获取module arguments数组不是被调用的函数。 const Promise = require('bluebird'); const inc = Promise.coroutine(function* (model, condition, fields, options = {}) {}); module.exports = { inc: (model, condition, fields, options = {}) => { //reveiving all the arguments fine return inc.apply(null, arguments); //but "arguments" array contains the values of "module", not the function } }; arguments数组: 0 – require function […]

如何正确从string内置类inheritance

我想扩展使用ES6类的内置JS String类。 即只是从stringinheritance。 但是,下面的代码不起作用。 +=运算符将myStr实际types更改为String 。 AFAIK,JS中没有运算符inheritance。 那么,如何避免这种行为呢? class QString extends String { isEmpty() { return this.length === 0; } } var testStr = new QString(); console.log(testStr.isEmpty()); testStr += new QString("abc"); console.log(testStr.isEmpty()); // 'TypeError: testStr.isEmpty is not a function' PS我知道有机会添加一个新的方法String.prototype 。 但这是一个不好的做法。 UPD :我明白JS中没有+运算符重载,原来的答案很清楚。 但是,它完全没有提到inheritance和ES6类。 我想至less应该保存被接受的答案。

如何使用es6语法将快速模块作为函数导入?

在当前版本的节点中,导入模块的function如下所示: // case 1: const MongoStore = require('connect-mongo')(session) // case: 2 const LocalStrategy = require('passport-local').Strategy 但是,我在我的express服务器中使用es2015语法,如下所示: import MongoStore from 'connect-mongo' import LocalStrategy from 'passport-local' 我如何将会话作为函数parameter passing给import语句,或者追加Strategy方法?

如何将bunyan日志loggingfunction绑定到ES6中的类function?

今天有一点烦恼,仍然有一个错误。 文档在这里。 最近的我是这样的: constructor(region, sslEnabled = true, logger = () => {}, errorLogger = () => {}) { if (region === undefined || !region) throw new Error("Initialization error: region is required"); this.log = () => {}; // these two lines might be unnecessary this.logError = () => {}; // this.log = logger.bind(this); this.logError = errorLogger.bind(this); […]

模拟一个依赖的构造函数Jest

我是Jest的新手。 我设法嘲笑我自己的东西,但似乎卡住嘲笑一个模块。 具体的构造函数。 usage.js const AWS = require("aws-sdk") cw = new AWS.CloudWatch({apiVersion: "2010-08-01"}) … function myMetrics(params) { cw.putMetricData(params, function(err, data){}) } 我想在testing中做这样的事情。 const AWS = jest.mock("aws-sdk") class FakeMetrics { constructor() {} putMetricData(foo,callback) { callback(null, "yay!") } } AWS.CloudWatch = jest.fn( (props) => new FakeMetrics()) 但是,当我在usage.js使用它时,cw是一个mockConstructor而不是FakeMetrics 我意识到,我的方法可能是“不太习惯”,所以我会很好的任何指针。 这是一个最小的例子https://github.com/ollyjshaw/jest_constructor_so npm install -g jest jest

Nodejs中的地图集合Harmony / ES6破坏了吗?

似乎Nodejs 0.10.20中的Map已经损坏。 我用–harmony(包括–harmony_collections标志)启动它。 请参阅http://dailyjs.com/2012/10/15/preparing-for-esnext/ 。 下面的例子在Firefox 20.0中运行。 在Nodejs控制台中,我执行以下操作 > var map = new Map([[“name”,“Nicholas”],[“title”,“Author”]]); 未定义 >地图 {} 所以contsructor初始化似乎没有工作。 然后我按照Firefox的例子,他们大多不工作: > console.log(map.has(“name”)); // true 假 未定义 > console.log(map.get(“name”)); //“尼古拉斯” 未定义 未定义 > console.log(map.has(“title”)); // true 假 未定义 > console.log(map.get(“title”)); //“作者” 未定义 未定义 > console.log(map.size()); // 2 TypeError:对象#没有方法“大小” 在复制:1:17 在REPLServer.self.eval(repl.js:110:21) 在repl.js:249:20 在REPLServer.self.eval(repl.js:122:7) 在界面。 (repl.js:239:12) 在Interface.EventEmitter.emit(events.js:95:17) 在Interface._onLine(readline.js:202:10) 在Interface._line(readline.js:531:8) […]

如何使用selenium webdriver承诺产量(发电机)?

我正在尝试在node 0.11.x使用生成器,以使我的生活更轻松地编写Seleniumtesting。 我的问题是,我不知道如何正确使用它们。 我几乎100%肯定它必须是一个语法问题。 我使用官方的selenium-webdriver模块(版本2.37.0)和co (版本2.1.0)来创build我的生成器。 这是一个没有发生器/产量魔法的常规testing: driver.isElementPresent(wd.By.css('.form-login')).then(function (isPresent) { console.log(isPresent); // true }); 这里有两个尝试获得与yield / generator magic相同的结果的尝试: var isPresent = yield browser.isElementPresent(wd.By.css('.form-login')); console.log(isPresent); // undefined var isPresent = yield browser.isElementPresent(wd.By.css('.form-login')).then(function (isPresent) { console.log(isPresent); // true }); console.log(isPresent); // undefined 正如你所见, isPresent总是undefined ,除非在promise的callbackisPresent中。 我必须承认,我不太了解发电机或承诺,所以我可能会错过一些非常明显的东西。

在节点0.11中使用ES6箭头函数w / Foo.prototype

我得到了我在使用原型扩展中使用箭头函数的意外行为。 function ES6Example(){} ES6Example.prototype.foo = function(bar){ return ((baz) => { console.log(this) this.bar = baz })(bar) } var es6Example = new ES6Example es6Example.foo('qux') console.info(es6Example.bar) 上面的代码导致全局上下文被打印出来, es6Example.bar也是未定义的。 这是旧的行为。 基于我在MDN中看到的文档,我期望这个绑定到实例。 我正在使用和谐标志使用节点v0.11.15运行上面的代码。 请注意,下面的工作: function ES6Example(){ this.foo = baz => { this.bar = baz } }

无法识别nodejs进程对象

我在我的文件中有这行代码: import appRoutes from process.ROOTDIR + '/../app/routes.js'; 我收到错误: SyntaxError: /Users/bli1/Development/Javascript/ReviewWeb/server/api/helpers/isomorphic.js: Unexpected token (6:22) 4 | import Router from'react-router'; 5 | import Log from'loglevel'; > 6 | import appRoutes from process.ROOTDIR + '/../app/routes.js'; 有没有一种方法,我可以有一个全球ROOTDIRvariables,所以我不必添加../../..到处都是?