使用文件的绝对路径时,babel-node 失败
babel-node fails, when using file's absolute path
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有这个限制?
我认为问题是您没有全局安装预设 es2016。
babel-node
先在当前目录node_modules
中查找,如果有none,则在父目录中查找,以此类推,查找全局node_modules
作为最后的手段。
您使用的是哪个版本的 Babel?
您似乎使用了 major API changes 附带的最新版本 6.0.0
。原因是 Babel 不仅仅是一个 ES2015 转译器,而是一个平台。
无论如何,您现在需要特定的预设。 babel-preset-es2015
是让它工作的插件。
CLI 用法
babel-node --debug --presets es2015 -- script.js --debug
任务运行器
npm install --save-dev babel-preset-es2015
插件并将其添加到您的 .babelrc
文件中:
{
"presets": ["es2015"]
}
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有这个限制?
我认为问题是您没有全局安装预设 es2016。
babel-node
先在当前目录node_modules
中查找,如果有none,则在父目录中查找,以此类推,查找全局node_modules
作为最后的手段。
您使用的是哪个版本的 Babel?
您似乎使用了 major API changes 附带的最新版本 6.0.0
。原因是 Babel 不仅仅是一个 ES2015 转译器,而是一个平台。
无论如何,您现在需要特定的预设。 babel-preset-es2015
是让它工作的插件。
CLI 用法
babel-node --debug --presets es2015 -- script.js --debug
任务运行器
npm install --save-dev babel-preset-es2015
插件并将其添加到您的 .babelrc
文件中:
{
"presets": ["es2015"]
}