节点 Keystonejs 意外令牌 export/import

Node Keystonejs unexpected token export/import

我正在 运行 使用这个 Keystonejs 节点 web 应用程序,我试图包含一个 class 我为我的 ReactNative 项目创建的,但我得到 'export' 意外令牌错误,我找不到解决方法:\,我将节点更新到 6.2.0,我只是 运行 就像 node keystone 我试过 node --harmony keystone 参数但是它仍然失败,我已经尝试安装 babel-core babel-cli babel-preset-es2015 但什么也没有,我仍然可以使用 (arg) => { /*body*/} 形式创建一个函数,尽管我什至不知道在哪个版本的 ECMASCRIPT 中引入了 xD。我的 class 是这样声明的: export default class API { ... } API 是我的 class 名字,我打算像

一样使用它

import API from "API"; API.myMethod().then((res)=>{/*etc*/});

实际上我在导出之前得到了意外的标记 'import',我将其更改为 'require',然后出现导出错误(抱歉,我正在尝试任何操作 xD ) 我在 mac 上工作,我用 yo keystone 构建了 keystone 项目并且我已经设置了我的 mongod 很好,在我尝试添加我的 class,有什么帮助吗?请 :\

我还在 class 方法中使用了 asyncawait 关键字,我认为这也可能会造成麻烦 XD,特别是因为我看到了 'async' 包在 package.json 文件 :(, 任何帮助将不胜感激,谢谢 :3

错误发生是因为NodeJS 没有在版本6.20 中实现模块。您可以通过 运行 命令获取正在处理的功能列表:

node --v8-options | grep "in progress"

您应该看到这一行:

--harmony_modules (enable "harmony modules" (in progress))

要使用模块(importexport),您需要使用 babel 将 ES2015 中的 Javascript 文件编译为 ES5。您可以在 package.json:

中创建一个简单的脚本来执行此操作
"compile": "./node_modules/.bin/babel -d dist/ src/"

该脚本假定您已安装 babel