Tag: babeljs

在MongoDB中使用本地ES6承诺

我知道Mongo的Node驱动程序可以使用外部库进行promisified 。 我很好奇,看看ES6承诺可以用于MongoClient.connect ,所以我尝试了这个(使用Babel 5.8.23 transpile): import MongoClient from 'mongodb'; function DbConnection({ host = 'localhost', port = 27017, database = 'foo' }) { return new Promise((resolve, reject) => { MongoClient.connect(`mongodb://${host}:${port}/${database}`, (err, db) => { err ? reject(err) : resolve(db); }); }); } DbConnection({}).then( db => { let cursor = db.collection('bar').find(); console.log(cursor.count()); }, err => { […]

asynchronous/等待不等待

我遇到了一个我不完全明白的问题。 我觉得有可能是我没有掌握的概念,可以优化的代码,可能还有一个错误的方法。 要大大简化整体stream程: 向外部API发出请求 对返回的JSON对象进行分析并扫描链接引用 如果find任何链接引用,则会使用真正的JSON数据填充/replace链接引用 一旦所有链接引用被replace,原始请求将被返回并用于构build内容 这里是原始请求(#1): await Store.get(Constants.Contentful.ENTRY, Contentful[page.file]) Store.get代表: async get(type, id) { return await this._get(type, id); } 哪些电话: _get(type, id) { return new Promise(async (resolve, reject) => { var data = _json[id] = _json[id] || await this._api(type, id); console.log(data) if(isAsset(data)) { resolve(data); } else if(isEntry(data)) { await this._scan(data); resolve(data); } else […]

服务器端反应:Babel不会在服务器上dynamic地转换JSX。 为什么?

我使用Node.js的LoopbackJS框架(与Express相同,因为它基于Express)。 而且我无法设置React服务器端渲染。 我遵循这篇文章 ,并在这里回答了Stackoverflow和其他文章,不起作用。 巴贝尔文件是悲惨的,没有例子,“尝试猜测”的风格。 以下是他们提供的关于如何在即时渲染React的唯一信息: $ npm install -g babel-core require("babel-core/register"); 所有具有扩展名.es6,.es,.jsx和.js的节点所需的后续文件将由Babel转换。 polyfill中指定的polyfill也是自动需要的。 但它不起作用。 顺便说一下,其他文章build议使用require("babel/register") 。 有什么不同? 我尝试了两个。 结果是一样的 – SyntaxError: Unexpected token 。 这是我的代码: 这是client/js/components.js : var React = require('react'); var ReactDOM = require('react'); var Form = React.createClass({ render: function() { return ( <form action="" method="post" id="login-form"> <div><input type="text" id="login" placeholder="Login" /></div> <div><input […]

什么是node-libs-browser,为什么在安装babel-loader的时候会安装它

我刚刚安装了babel loader ,使用webpack的babel。 它带来了3个额外的节点依赖关系,但只有其中2个我预期 来自babel loader package.json "peerDependencies": { "babel-core": "*", "webpack": "*" }, 那么,为什么我也越来越node-libs-browser我不知道它是什么,也不希望额外的模块在我的devDependencies

TypeError:超级expression式必须为null或者一个函数,而不是用Babeljs定义的

我目前正在尝试在ES6中使用node.JS和Babel进行多文件inheritance(我使用Babel将ES6中的代码转换为ES5,因为Node现在不实现ES6)。 我正在使用导入/导出来“链接”不同的文件。 其实我有: 父类(文件1) export class Point { constructor(x, y) { this.x = x; this.y = y; } toString() { return '(' + this.x + ', ' + this.y + ')'; } } 和: 子类(文件2) import Point from './pointES5' export class ColorPoint extends Point { constructor(x, y, color) { super(x, y); this.color = color; } […]

让babel排除testing文件

在我的构build步骤中,我使用babel将代码转换为es5(从src到dist )。 如何排除以.test.js结尾的文件? 的package.json "scripts": { "build": "babel src –out-dir dist", .babelrc { "presets": [ "es2015" ], "ignore": "\\.test\\.js" }

ES6方法得到一个空“这个”和类variables是无法访问的

我正在使用ES6类将一些function绑定在Node中。 这里(基本上)是这样的: class processDocs { constructor(id) { this.id = id; // console.log(this) returns { id: id } } getDocs(cb) { // console.log(this) returns null docs .query(qb => { qb.where('id', this.id); }) .fetch() .then(function(documents) { cb(null, documents); }) ; } alterDocs(documents, cb) { //some logic } reindexSearch(cb) { //some logic } process() { // console.log(this) returns […]

babel +path+节点6.x:TypeError:path必须是string。 收到undefined

我一直在尝试将我的nodejs版本更新到6.x,但每次都会出现以下错误: path.js:7 throw new TypeError('Path must be a string. Received ' + inspect(path)); ^ TypeError: Path must be a string. Received undefined at assertPath (path.js:7:11) at Object.dirname (path.js:1326:5) at /usr/lib/node_modules/babel-core/lib/transformation/file/options/option-manager.js:374:36 at /usr/lib/node_modules/babel-core/lib/transformation/file/options/option-manager.js:396:22 at Array.map (native) at OptionManager.resolvePresets (/usr/lib/node_modules/babel-core/lib/transformation/file/options/option-manager.js:385:20) at OptionManager.mergePresets (/usr/lib/node_modules/babel-core/lib/transformation/file/options/option-manager.js:369:10) at OptionManager.mergeOptions (/usr/lib/node_modules/babel-core/lib/transformation/file/options/option-manager.js:328:14) at /usr/lib/node_modules/babel-core/lib/transformation/file/options/option-manager.js:370:14 at /usr/lib/node_modules/babel-core/lib/transformation/file/options/option-manager.js:390:24 我尝试了这三个版本: 的NodeJS-6.0.0-1 的NodeJS-6.2.0-1 的NodeJS-6.2.1-1 在package.json : "babel-core": […]

JavaScript行之间保持什么状态?

我想知道在提交给babel-node两行JavaScript代码之间保留了哪些状态。 因为如果你写了两行代码,你就可以覆盖一个没有错误的variables定义。 例如,用babel-node –presets es2015 ,你可以这样做: > const a = 1; undefined > let a = 2; undefined 现在如果你把它写在一行中,你会得到一个错误: > const a = 1; let a = 2; TypeError: repl: Duplicate declaration "a" … 似乎在第一种情况下, a被定义为1 ( constvariables赋值)的状态丢失(直到第二个赋值),而在第二种情况下,它被保留。 是什么导致了这里的差异? 和哪些国家维持?

如何在Heroku上启用ES2017function来运行Node.js应用程序?

我是新来的节点,并创build了一个应用程序,它有一些async / await语法就像这样: const express = require('express'); const app = express(); const someLibrary = require('someLibrary'); function asyncWrap(fn) { return (req, res, next) => { fn(req, res, next).catch(next); }; }; app.post('/getBlock', asyncWrap(async (req,res,next) => { let block = await someLibrary.getBlock(req.body.id); [some more code] })); app.listen(process.env.PORT || 8000); 它在我的机器上工作正常,但是当我部署到Heroku我得到一个错误,因为语法不支持: 2017-03-23T10:11:13.953797+00:00 app[web.1]: app.post('/getBlock', asyncWrap(async (req,res,next) => { 2017-03-23T10:11:13.953799+00:00 […]