Tag: ecmascript 6

ES6dynamic导入和实例化类

我想弄清楚如何执行在ES6一个服务器端(与巴贝尔node.js)类的dynamic导入。 我想要有一些类似于Javareflection的function。 这个想法是导入一个特定的文件夹中的所有类,并dynamic地实例化它们。 所以举例来说,我可以在一个文件夹中声明多个类,如下所示: export default class MyClass { constructor(somevar) { this._somevar = somevar } //… //some more instance level functions here } 然后在我的应用程序的代码中的其他地方,我可以有一个函数,找出特定文件夹中的所有类,并试图instanciate他们: //somewhere else in my app instanciationFunction(){ //find all the classes in a specific folder var classFiles = glob.sync(p + '/path_to_classes/**/*.js', { nodir: true }); _.each(classFiles, async function (file) { console.log(file); var […]

查找类方法返回空对象而不是用户数据

所以,我创build了不同的帮助器来减less我的控制器上的一些代码。 所以我创build了一个名为Lookup的类来帮助我search数据库中的用户,并创build了一个searchAccountKey(key,callback)。 所以,每当我使用这个方法,它似乎工作,但用户对象返回,而不是用户。 我怀疑这是由于收益率,但是当我使用收益率时,它给了我一个错误。 LookupHelper.js 'use strict'; const User = use('App/Model/User'); class LookupHelper { // Grab the user information by the account key static searchAccountKey(key, callback) { const user = User.findBy('key', key) if (!user) { return callback(null) } return callback(user); } } module.exports = LookupHelper; UsersController(第44行) Lookup.searchAccountKey(account.account, function(user) { return console.log(user); }); 编辑:每当我把产量infront的User.findBy() The keyword […]

在运行heroku本地网时,babel-node无法识别

我尝试在Heroku上部署Node.js API,但显示应用程序错误。 因此,使用“ heroku本地networking ”命令来testing任何错误..并得到一个错误,说'babel节点'不被识别为内部或外部命令,可操作的程序或batch file。 另一方面,当我运行命令'npm start'时,我没有得到任何错误,服务器开始运行。 的package.json { "name": "apollo-starter-kit", "version": "0.1.0", "description": "Minimal set of code to write a GraphQL server with Apollo graphql-tools", "scripts": { "start": "nodemon ./server.js –exec babel-node", "test": "echo \"Error: no test specified\" && exit 1", "lint": "eslint ." }, "repository": { "type": "git", "url": "git+https://github.com/apollostack/apollo-starter-kit.git" }, "keywords": […]

在编写ES6模块并转换为CommonJS时,实际上不会导出指定的导出

我有一个ES6模块,我试图导出几个函数。 最终目标是导入到purescript中,但是现在我所谓的导出函数甚至不会出现在Node中,我不明白为什么。 这里是模块: "use strict"; const point = (x, y) => new Point(x, y) const pointToString = (point) => point.toString() class Point { constructor(x, y) { this.x = x; this.y = y; } toString () { return `(${this.x}, ${this.y})`; } } export { point, pointToString } 我像这样进行传译: browserify src/page.js -t [ babelify –presets [es2015] ] […]

如何在JavaScript中parsing后立即处理asynchronous结果?

我有一个asynchronous函数需要相当多的时间来callback,需要运行一个input数组,并将结果传递给后续操作。 我最初的方法是基于Promise的: Promise.all(entries.map((entry) => { return new Promise((resolve, reject) => { processEntry(entry, resolve); }); })).then((outputs) => { outputs.forEach((output) => { return console.log(output); }); callback(); }); 与此有关的问题是,输出只在得到解决之后得到处理(或在这种情况下logging)。 为了让他们尽快解决问题,我尝试了这种更老式的方法: var i = 0; entries.forEach((entry) => { processEntry(entry, (output) => { console.log(output); if (++i >= entries.length) callback(); }); }); 这适用于我特殊的情况,但似乎不是一个正确的通用解决scheme,因为不再保证输出顺序。 为了达到预期的效果,至今我可以想到的最好的方法是在entries填入输出为原始索引的数组,并且每当新的输出出现时,就用数组的起始处理输出单独的滑动索引,当它达到一个undefined时候停止。 有没有更好的方法来实现这一目标?

如何阅读节点中的本地Markdown文件?

我正在使用名为react-markdown的库。 如果你知道React,它的实现非常简单。 import React from 'react'; import ReactDOM from 'react-dom'; import ReactMarkdown from 'react-markdown'; var content = '# This is a header\n\nAnd this is a paragraph'; ReactDOM.render( <ReactMarkdown source={content} />, document.getElementById('root') ); 库的演示只讨论创buildMarkdownstring作为variables,而不是本地文件。 我明白的做法是在Node中使用fs 。 所以我写了以下内容: import React from 'react'; import ReactDOM from 'react-dom'; import ReactMarkdown from 'react-markdown'; import * as fs from 'fs'; import […]

是否有可能将全局范围注入ES6又名单例中的实例化类?

首先,我需要道歉,因为这将会有很多代码,这将膨胀这个问题。 不过,我认为这将有助于更好地了解我的问题。 比方说,我给这个MainModule : 'use strict'; /** * Loads Module from given name. * @class {LoadModules} */ class LoadModules { constructor(moduleName) { // define Modulename. this.moduleName = moduleName; } /** * Initialize module. * @method init * @return {void} [nothing] */ init() { // Path Module. const path = require('path'); // Require Module from given […]

为什么我的中间件不检查电子邮件是否已经存在?

我使用passportJS来validation人员。 我最近意识到的问题是,用户可以注册多个帐户。 我创build了一个中间件来检查电子邮件是否已经被使用,但不知何故仍然通过testing。 var User = require('../models/users'); var authMethods = {}; authMethods.isInUse = function(req,res,next){ User.findOne({"email" : req.body.email}, (err,user) => { if(user){ req.flash('error',"This mail is already in use."); res.redirect('/register'); }else { return next(); } }); } module.exports = authMethods; 在我的身份validation页面中,我正在调用路由中的中间件以满足条件。 router.post('/register',authMethods.isInUse ,multipart(),function(req, res) { var image = fs.readFileSync(req.files.image.path); var profilePic = {data : image, contentType : […]

多个代理对象对同一个目标的明显污染

我试图为JavaScript中的同一目标对象创build多个代理包装器,每个包装器具有稍微不同的属性,这些属性影响包装的function的操作。 这些属性分配给set的receiver对象并get并get处理程序。 但是,当我检查生成的代理时,它们都具有我希望分配给最后创build的代理的属性集。 const obj = {}; const proxies = ['one', 'two'].map(name => { console.log(`proxy ${name}`); const proxy = new Proxy(obj, { get: (target, prop, receiver) => { if (prop === 'name') { return receiver.name; } return target[prop]; }, set: (target, prop, val, receiver) => { if (prop === 'name') { console.log(`setting name ${val} on […]

在Typescript中有条件的默认导出

我有一个教程的以下JS代码: if (process.env.NODE_ENV === 'production') { module.exports = require('./configureStore.prod'); } else { module.exports = require('./configureStore.dev'); } configureStore.*.ts文件都有一个默认的导出: export default function configureStore(initialState?: State) { // … } 我想将以前的代码片段中的条件输出转换成TypeScript。 如果我只是离开代码,我得到一个编译时错误: error TS2306: File 'configureStore.ts' is not a module. 经过一些试验和错误,我可以得到以下编译: import {Store} from "redux"; import {State} from "../reducers"; let configureStore: (state?: State) => Store<State>; if (process.env.NODE_ENV === "production") […]