我想根据源代码运行以下代码,其中包含一些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
我的问题:
- 如何逐步设置节点环境以运行具有 ES6 语法的代码?
- 在第一个答案的帮助下,我设法设置了环境以成功运行(详细信息可以在第二个解决方案中找到),但编译速度似乎很慢。有谁知道为什么?
谢谢!
是的,你需要 babel。您是否在此处查看了文档:https://babeljs.io/docs/setup/#installation
$ npm install --save-dev babel-core
然后:
require("babel-core").transform("code", options);
之后,请确保您已设置 .babelrc 文件:
{
"presets": ["es2015"]
}
希望对您有所帮助!
@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 个文件,它的某些功能将被禁用。 也许出于类似的原因,上面的这种方法有效,但对我来说似乎很慢。有谁知道为什么以及如何解决它?
谢谢!