Tag: babeljs

核心与节点和巴贝尔debugging器?

我一直在尝试使用Nuclide / Atom来启动和debugging使用Babel和ES6 +代码的unit testing。 启动configuration如下所示: 节点运行unit testing,就像我从命令行运行一样,并不停在我的断点处。 如果我在命令行中使用与–inspect-brk相同的调用,则可以从Chrome中的chrome-devtools url正确debugging(使用源代码映射)。 有没有办法做到这一点? 我不能“附加”,因为unit testing是,而且应该是一个直射脚本执行。

冲突使用babel / register

我有两个本地NPM包之间似乎是babel/register的冲突。 在一个包中,我正在做以下工作: require('babel/register'); require('index'); 而在同一个包的索引文件中: require('test'); 而在“testing”包中: require('babel/register'); require('test/index'); 这会引发以下错误: throw new Error("only one instance of babel/polyfill is allowed"); 但是,如果我将babel/register行从“test”包中取出,“test”包的index文件中会出现以下错误: import fs from 'fs'; ^^^^^^ SyntaxError: Unexpected reserved word 我曾尝试使用System.import导入“testing”包(使用BabelJS站点上指定的填充),但在这种情况下,我得到了与上述相同的错误。 我应该如何导入一个包到另一个,并保留使用ES6导入/导出和其他ES6function的能力? 编辑:我简化了这一点,我仍然要求“testing”到第一个包,但我不加载中介文件。 相反,“testing”的“主”文件被设置为test/index.理论上,现在只是加载一个应该可以注册的ES6模块,我仍然会得到上述错误。

es6模块到commonjs节点和谐旗下的打字稿

我在–harmony标志下使用TypeScript(1.6),所以我想将es6模块语法转换为commonjs。 从我可以告诉,我不能用TypeScript 1.6做到这一点。 如果我将目标设置为es6,并将模块设置为commonjs,则会出现TypeScript错误 – 定位“ES6”或更高版本时,无法将模块编译为“commonjs”,“amd”,“system”或“umd”。 为什么不将TypeScript编译成commonjs与ES6目标? 我想很多人都希望这样做,因为节点还不支持ES6模块。 我以为新的moduleResolution编译器选项可能会解决这个问题,但它似乎没有做任何事情。 目前,我不得不使用babel来将模块语法转换为commonjs,但是我想从构build中删除babel,这样我就可以利用源映射。 有什么办法可以做到这一点? 注意:我不想传输到ES5。 我希望我的JS在和谐标志下作为ES6运行。 谢谢!

在function或课堂之外的“超级”

我不能传译这一小段代码: class FooBar extends SomeParent { constructor() { super(); } start() { var foo = function() { super.start(); // <– Error: 'super' outside of function or class }; } } 抛出的错误是'super' outside of function or class 。 但是,相同的代码在Babel REPL中可以很好地处理。 我正在使用此命令使用自定义的Node.JS程序进行编译: babel.transformFileSync(filename, { presets: [ 'es2015' ] } ); 安装信息: $ npm ls –global –depth 0 […]

Babel JS babel-preset-php错误

我刚刚尝试新的Babel的babel-preset-php( https://gitlab.com/kornelski/babel-preset-php#php7-to-es7-syntax-translator )。 我在README文件中做了所有事情,我用npm i -S babel-preset-php安装了预设。 然后我创build了一个.babelrc文件,内容如下: { "presets": ["php"] } 用npm i -g babel-cli安装了npm i -g babel-cli 。 然后我创build了一个简单的PHP文件,它只包含一个简单的函数: <?php function addCalculator($x, $y) { return $x + $y; } 并尝试运行babel number.php -o file.js 。 但是我在脚本的执行中遇到一个错误: /home/claudio/Documents/Development/babel/node_modules/babel-preset-php/lib/plugins.js:6 Identifier(p) { ^ SyntaxError: Unexpected token ( (While processing preset: "/home/claudio/Documents/Development/babel/node_modules/babel-preset-php/index.js") at Module._compile (module.js:439:25) at Object.Module._extensions..js (module.js:474:10) […]

我可以使用Babel Require Hook生产ES6吗?

我有一个使用ES6的节点应用程序。 我正在使用Babel进行传译。 据我所知,使用像Gulp一样的构build系统或使用require钩子 。 需求挂钩方法似乎吸引我,因为我将能够保持我的源文件在ES6,但仍然执行它们使用node server.js而不使用一些构build系统。 这对于开发至less是非常有用的,我主要关心的是在生产中使用这种方法。 每次用户提出请求时是否有任何惩罚? 这是如何工作的? 对于上下文,我正在使用Express应用程序。

如何防止发电机function的babel

巴贝尔,我有一个奇怪的问题。 当我在其中一个类中使用简单的生成器函数时,babel会创build一个包含对regeneratorRuntime的调用的函数。 var marked3$0 = [getQueryDummy].map(regeneratorRuntime.mark); function getQueryDummy(start, end, step) { return regeneratorRuntime.wrap(function getQueryDummy$(context$4$0) { 不好的是,它不会创build这个函数,当我忘记手动replace原来的编译生成器(总是发生这种情况) 我知道我可以补充 require('babel/polyfill') 到我的文件。 polyfill拥有regeneratorRuntime函数。 在这里,它变得非常奇怪。 即使我将require(…)放在文件的最顶端,babel在包含polyfill之前调用regeneratorRuntime ,这又会导致相同的错误。 为了完整起见,这里是发生器 function *getQueryDummy(start, end, step) { while (start < end) { yield [start, '@dummy']; start += step; } } 我使用的是babel版本5.8.23 。 有没有办法告诉巴贝尔根本不碰generators ? 节点本地支持它们,不需要我编译它…

我可以导入babel-polyfill模块而不是全部?

如何导入babel-polyfill的某些特定模块而不是全部导入? 对于我来说,它的大小似乎太大了,我只用了它的一些特性。 我想要的是如下: import "babel-polyfill/symbol";

添加到`WeakSet`,但仍然打击记忆

这是我注意到的奇怪。 下面的代码不应该像WeakSet使用内存,显然没有其他引用逗留在周围: 'use strict'; require('babel-polyfill'); const s = new WeakSet(); for (let i = 0 ; ; i++) { s.add({}); if (i % 100000 === 0) console.log(`${i} :${process.memoryUsage().heapUsed}`); } (SCCE github回购这里 )。 然后打开它的记忆(在Node v4.3.2中用Babel transpiling): <— Last few GCs —> 165 ms: Scavenge 13.6 (48.0) -> 13.6 (48.0) MB, 14.4 / 0 ms [allocation failure]. […]

如何在运行时重新加载所需的模块?

我想知道如何在运行时重新加载Node.js模块。 假设我有以下代码: index.js var myModule = require("./app.js"); app.js var express = require("express"); express.listen(3000, function() { console.log("app listening on port 3000"); }); 我尝试了多种方式来重新加载我在index.js模块中所需的模块。 但Express应用程序不会重新启动。 我想保持index.js运行,因为它处理重新编译Babel模块。 和express服务器的app.js模块需要完全重启。 有没有办法做到这一点,而无需启动app.js的第二个进程?