如何设置节点环境以运行涉及语法的 ES6 代码,例如“导入..从..`.



我想根据源代码运行以下代码,其中包含一些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

我的问题

  1. 如何逐步设置节点环境以运行具有 ES6 语法的代码?

  1. 在第一个答案的帮助下,我设法设置了环境以成功运行(详细信息可以在第二个解决方案中找到),但编译速度似乎很慢。有谁知道为什么?

谢谢!

是的,你需要 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 的方法。以下是我此刻觉得很舒服的解决方案。

  1. 创建一个目录并在其终端上运行npm init;
  2. 在此目录的终端运行npm install --save-dev PackageName内移动以下软件包:browserifybabel-clibabelifybabel-preset-es2015 ;
  3. 运行npm install --save d3 ;
  4. 运行echo '{ "presets": ["es2015"] }' > .babelrc ;
  5. 到现在为止,环境已经全部设置好了。 当您的scritp.js准备就绪时,在终端运行./node_modules/.bin/babel-node script.js

它看起来很慢,因为brackets警告项目中有超过 30,000 个文件,它的某些功能将被禁用。 也许出于类似的原因,上面的这种方法有效,但对我来说似乎很慢。有谁知道为什么以及如何解决它?

谢谢!

最新更新