我想根据source code here运行以下代码,其中包含一些ES6语法,如import ... from ...
:
import rgb from "./rgb";
import array from "./array";
import date from "./date";
import number from "./number";
import object from "./object";
import string from "./string";
import constant from "./constant";
var interpolateValue = function(a, b) {
// set var t and c
var t = typeof b, c;
// if b is null or t is type boolean,
return b == null || t === "boolean" ? constant(b)
: (t === "number" ? number
: t === "string" ? ((c = color(b)) ? (b = c, rgb) : string)
: b instanceof color ? rgb
: b instanceof Date ? date
: Array.isArray(b) ? array
: isNaN(b) ? object
// (a,b) is 2 function args
: number)(a, b);
}
console.log(interpolateValue("foo", "bar")(0.5));
我尝试在d3.js
作为依赖项的节点项目中运行此代码。但是,我收到了指向控制台中import
的以下错误:
SyntaxError: Unexpected reserved word
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:373:25)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
我的问题:
谢谢!
答案 0 :(得分:1)
是的,你需要巴贝尔。你有没有在这里查看文档: https://babeljs.io/docs/setup/#installation
$ npm install --save-dev babel-core
然后:
require("babel-core").transform("code", options);
之后确保您已设置.babelrc文件:
{
"presets": ["es2015"]
}
希望有所帮助!
答案 1 :(得分:0)
正如@abigwonderful所指出的那样,babel网站提供了设置环境以将ES6代码转换为ES5的方法。以下是我现在觉得很舒服的解决方案。
npm init
; npm install --save-dev PackageName
以获取以下软件包:browserify
,babel-cli
,babelify
,babel-preset-es2015
; npm install --save d3
; echo '{ "presets": ["es2015"] }' > .babelrc
; scritp.js
准备好后,在终端运行./node_modules/.bin/babel-node script.js
似乎很慢,因为brackets
警告项目中有超过30,000个文件,其中一些功能将被禁用。也许出于类似的原因,这种方法起作用但对我来说似乎很慢。有谁知道为什么以及如何解决它?
谢谢!