Articles of babeljs

如何用节点js和babel保存正确的行号

我有以下设置,并有我的错误/堆栈跟踪问题,我错过了什么? package.json看起来像: { "name": "xxxxxx", "main": "server.js", "private": true, "scripts": { "start": "nodemon –exec ./node_modules/.bin/babel-node server.js" }, "dependencies": { "babel": "^6.5.2", "babel-cli": "^6.6.5", "babel-preset-es2015": "^6.6.0", "babel-preset-react": "^6.5.0", "babel-preset-stage-0": "^6.5.0", "babel-runtime": "^6.6.1" } } .babelrc看起来像: { presets: ["es2015", "stage-0", "react"], sourceMap: 'inline', retainLines: true } server.js看起来像: let aVar = ''; throw new Error('some error'); import errorHandler […]

如何忽略其他文件或组件所需的node.js中的文件

以下可以忽略或执行导入文件的一些修改,例如在我的index.js中 require.extensions['.js'] = function(file) { console.log(file.id) return; }; 不过,我真的不想忽略index.js中的这些文件,我想忽略在随后的文件/组件中导入的文件 require.extensions['.js'] = function(file) { console.log(file.id) return; }; require('babel-register') require('./components/Test.spec.js'); 例如这将logging下面的内容并返回 /Users/me/myapp/node_modules/babel-register/lib/node.js /Users/me/myapp/tests/components/Test.spec.js 真的是我想要的是它忽略Test.spec.js文件中的任何包含的特定types的文件 我知道在babel中指定忽略的选项,但是这只是忽略了他们被转发,所以不是真正的我想要的。 基本上我想要一个特定的文件types,例如.jsx不被编译,或者我可以重写这个需求并返回另一个函数。 https://babeljs.io/docs/usage/require/

用Webstorm(Babel)进行ES6debugging

有Webstorm V10,巴贝尔文件观察员工作正常,一切都很好。 现在我想debugging的代码,任何方式来debuggingES6文件本身或必须做的JS输出文件babel编译? 请指教。

babel-node无法在node_modules中要求jsx文件

我知道默认情况下, babel-node忽略了node_modules ,所以我运行了三种不同的方式来覆盖它,都失败了: 用.babelrc运行babel-node app.js : { "presets": ["es2015", "react"], "only": [ "app", "node_modules/react-components" ] } 结果: SyntaxError: Unexpected token <用于所需的jsx节点模块 用.babelrc运行babel-node app.js : { "presets": ["es2015", "react"], "ignore": "node_modules\/(?!react-components)" } result: SyntaxError: Unexpected token <用于require jsx节点模块 使用babel-node ./bin/www –ignore '/node_modules/(?!react-components)运行babel-node ./bin/www –ignore '/node_modules/(?!react-components) : { "presets": ["es2015", "react"] } 结果: [project]/node_modules/babel-preset-react/node_modules/babel-plugin-transform-react-jsx/lib/index.js:12 var visitor = […]

核心与节点和巴贝尔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应用程序。