ES2015“导入”在带有--harmony_modules选项的节点v6.0.0中不起作用
ES2015 "import" not working in node v6.0.0 with with --harmony_modules option
我正在使用节点v6.0.0,并希望使用ES2016(ES6)。但是我意识到"导入"语法不起作用。"导入"不是在ES2015中编写模块化代码的基础吗?我也尝试使用--harmony_modules
选项运行节点,但仍然收到有关"导入"的相同错误。这是代码。
没有"导入"的工作代码:
'use strict';
let sum = 0;
class Number {
addNumber(num1, num2) {
return num1 + num2;
}
}
let numberObj = new Number();
sum = numberObj.addNumber(1,2);
console.log("sum of two number 1 and 2 "+ sum);
带有"导入"的不工作代码:
服务器.js
'use strict';
import Number from "./Number";
let sum = 0;
let numberObj = new Number();
sum = numberObj.addNumber(1,2);
console.log("sum of two number 1 and 2 "+ sum);
编号.js
'use strict';
export default class Number {
addNumber(num1, num2) {
return num1 + num2;
}
}
我还检查了 http://node.green/以查看支持的 es6,但无法理解为什么它不适用于 --harmony_modules 选项。请帮忙。
它们只是尚未实现。
Node 6.0.0 使用 V8 版本,其中大部分 ES6 功能都已完成。不幸的是,模块不是这些已完成的功能之一。
node --v8-options | grep harmony
正在进行的和谐标志没有完全实现,通常不起作用:
--es_staging(启用值得测试的和谐功能(仅供内部使用))
--和谐(启用所有已完成的和谐功能)
--harmony_shipping(启用所有随附的和谐功能)
--harmony_object_observe(启用"和谐对象观察"(进行中))
--harmony_modules(启用"和谐模块"(进行中))
--harmony_function_sent(启用"和谐功能.发送"(进行中))
--harmony_sharedarraybuffer(启用"和谐共享阵列缓冲区"(正在进行中))
--harmony_simd(启用"和谐模拟"(进行中))
--harmony_do_expressions(启用"和谐做表达式"(进行中))
--harmony_iterator_close(启用"和谐迭代器完成"(进行中))
--harmony_tailcalls(启用"和谐尾部调用"(进行中))
--harmony_object_values_entries(启用"和谐对象.值/对象.条目"(进行中))
--harmony_object_own_property_descriptors (启用 "harmony Object.getOwnPropertyDescriptors()" (正在进行中))
--harmony_regexp_property(启用"和谐统一统一码正则表达式属性类"(进行中))
--harmony_function_name(启用"和谐函数名称推理")
--harmony_regexp_lookbehind(启用"和谐正则表达式查看")
--harmony_species(启用"和谐符号.物种")
--harmony_instanceof(启用"和谐实例支持")
--harmony_default_parameters(启用"和谐默认参数")
--harmony_destructuring_assignment(启用"和谐解构赋值")
--harmony_destructuring_bind(启用"和谐解构绑定")
--harmony_tostring(启用"和谐到字符串")
--harmony_regexps(启用"和谐正则表达式扩展")
--harmony_unicode_regexps (启用 "Harmony Unicode 正则表达式")
--harmony_sloppy(启用"草率模式下的和谐功能")
--harmony_sloppy_let(启用"和谐让进入草率模式")
--harmony_sloppy_function(启用"和谐草率功能块范围")
--harmony_proxies(启用"和谐代理")
--harmony_reflect(启用"和谐反射 API")
--harmony_regexp_subclass(启用"和谐正则表达式子类")
这应该是对@Paulpro答案的评论,但我没有足够的代表发表评论。
对于 Windows 用户,等效命令是:
node --v8-options | findstr harmony
在模块实现之前,您可以使用 Babel "转译器" 来运行您的代码:
npm install --save babel-cli babel-preset-node6
./node_modules/.bin/babel-node --presets node6 ./your_script.js
查看 https://www.npmjs.com/package/babel-preset-node6 和 https://babeljs.io/docs/usage/cli/
缺点:这有各种缺点,例如额外的编译时间,这可能很重要,你现在需要源映射进行调试;只是说。
如上所述,ES6 模块尚未实现。
以与Common JS模块(当前Node.js模块语法)向后兼容的方式实现ES6模块似乎是一个不平凡的问题。
但是,有一个实现草案,它为包含 ES6 模块的文件引入了一个新的文件扩展名 - .mjs
。
此外,还有一个反建议,它提出了一种在package.json中声明所有带有ES6模块的文件的替代方法,如下所示:
{
"modules.root": "/path/to/es6/modules"
}
- 节点导出返回一个空对象
- 可以前端maven插件使用节点,npm已经安装
- 我的单元测试选项是什么
- 如何更改bigquery API中的计费层选项
- 在jstree中,如何将指定的节点集中到大型树上
- 使用Javascript获取所选选项ID
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- Selectize.js:如何对整数值的选项进行排序
- 通过js在新选项卡中有条件地打开url
- ES2015“导入”在带有--harmony_modules选项的节点v6.0.0中不起作用
- 在节点中实现依赖选项列表.js + express
- 执行节点.JS基于HTML选择选项的查询
- 来自 json 节点的选项卡
- 节点 - 用于发送电子邮件的选项,发送网格和节点邮件之一或组合
- 使客户端在选项卡关闭节点上发送断开连接事件.js
- 层次结构和多选项下拉列表(HTML),并在项目之间导航(子节点)
- 将DOM节点链接到(浏览器内)域对象的选项:是直接引用
- IE javascript:当选项被点击时,从选择多个中移除选项节点
- 有没有一种好方法来启用“在新窗口中打开链接”?在dom节点上的浏览器菜单选项,而不使链接跟随单击
- 如何从节点运行具有特定选项的webpack