当使用文件的绝对path时,babel-node失败

import { Observable, } from 'rx'; import { readFile, } from 'fs'; let readFile_ readFile_ = Observable.fromNodeCallback(readFile) readFile_(__dirname + '/my-app.js', 'utf-8') .subscribe( (text) => console.log(text), (err) => console.error(err) ) 

当我运行这个ecma6作为babel-node /home/sk/ws/rxjs-workshop-nov-2015/clcn-app/my-app.js ,它失败,错误,

 /usr/local/lib/node_modules/babel-cli/node_modules/babel-core/lib/transformation/file/options/option-manager.js:329 throw new Error("Couldn't find preset " + JSON.stringify(val)); ^ Error: Couldn't find preset "es2015" 

但是当我cd到文件的父文件夹,并运行babel-node my-app.js ,它的工作原理。

为什么babel-node有这个限制?

你使用的是哪个版本的Babel?

它看起来像你使用最新的版本6.0.0与主要的API更改 。 原因是巴别不仅仅是一个ES2015的译员,而是一个平台。

无论如何,你现在需要特定的预设。 babel-preset-es2015是使其工作的插件。

CLI用法

 babel-node --debug --presets es2015 -- script.js --debug 

任务亚军

npm install --save-dev babel-preset-es2015该插件并将其添加到您的.babelrc文件中:

 { "presets": ["es2015"] } 

可用的预设列表: https : //babeljs.io/docs/plugins/#presets

我认为问题是你没有安装全局预置的es2016

babel-node首先在当前目录的node_modules中查找它,如果没有,则search父目录等,查看全局的node_modules作为最后的手段。