【问题标题】:NodeJS harmony gives SyntaxError on importNodeJS 和谐在导入时给出 SyntaxError
【发布时间】:2014-05-29 00:47:17
【问题描述】:

我正在使用带有标志 child_process --harmony 的 ES6 测试节点,但在我导入时它在第一步失败。有什么想法吗?

import {'spawn'} from child_process;
console.log(spawn);

然后我跑:

node --harmony test.js

我得到:

:1
(function (exports, require, module, __filename, __dirname) { import {spawn} f
                                                              ^^^^^^
SyntaxError: Unexpected token import

【问题讨论】:

  • 你在哪个版本的节点上尝试这个?
  • 不相关,但为什么要从名为 child_process 的标识符中导入字符串“spawn”?

标签: javascript node.js ecmascript-harmony


【解决方案1】:

并非 ES6 的所有特性都在 v8 中得到支持,因此在 Node.js 中也是如此。我认为模块就是其中之一。

您可能会发现这个兼容性矩阵很方便:http://kangax.github.io/es5-compat-table/es6/

您可以使用Traceur compiler 来执行此操作,尽管并非所有内容都使用模块实现it appears

在 2015 年 12 月编辑 - 正如该答案的一些 cmets 所暗示的,此时,Babel 已成为首选的 ES6 转译器。在我写原始答案的时候,Babel 仍然被称为 6to5,不像 Traceur 那样受欢迎。今天,Babel 是首选。

【讨论】:

  • 你可以使用来自 npm 的 babel
  • 要获得与 ES6 标准的几乎完全兼容,您可以安装 babel-node npm install -g babel-node,然后使用 babel-node 运行您的代码。这是a link,以防此信息过时。
  • 重要:包名是babel-cliNOT babel-node
【解决方案2】:

试试--experimental-modules 标志

早在 2017 年,Node.js 8.9.0 就为 ECMAScript 模块,以其导入和导出语句而闻名。这 支持是背后的标志--experimental-modules。

https://medium.com/@nodejs/announcing-a-new-experimental-modules-1be8d2d6c2ff

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2018-04-24
    • 2021-08-01
    • 2020-11-07
    • 2012-09-27
    • 1970-01-01
    相关资源
    最近更新 更多