JavaScript模块 - SyntaxError:exports.runInThisContext中的意外保留字

时间:2015-12-28 22:59:33

标签: javascript node.js import export cucumberjs

Benjamins-MacBook-Pro:Features Ben$ cucumber.js addItem.feature
/Users/Ben/WhatWeGrow.Web/public/Features/addItem.step.js:4
import * as a from "grocery-list";
^^^^^^

SyntaxError: Unexpected reserved word
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:414:25)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at /usr/local/lib/node_modules/cucumber/lib/cucumber/cli/support_code_loader.js:63:29
    at Array.forEach (native)
    at Object.wrapper (/usr/local/lib/node_modules/cucumber/lib/cucumber/cli/support_code_loader.js:62:15)

我正在使用cucumberjs做一些BDD。我有两个screnarios的功能。当所有js都在一个文件中时,它们在终端中运行时工作。我希望将GroceryList类放在一个单独的文件中,以使其更清晰。

我像这样导入:

'use strict';

import * as a from "grocery-list";

我这样导出:

  module.exports = function () {

  class GroceryList {

    constructor() {
      this.list = {
        value: [],
        writable: false,
        enumerable: true
      };
    }

    add(item) {
      this.list.value.push(item);
    }

    getAll() {
      return this.list.value;
    }

    getItemIndex(value) {
      var index = this.list.value.length;
      while (--index > -1) {
        if (this.list.value[index] === value) {
          return index;
        }
      }
      return -1;
    }
  }
  }

我错误地得到了这个错误? Google搜索此问题的内容如下:

  

看起来它找不到babel和babel-core。你有那些吗?   你的node_modules目录?

我有很多node_modules目录,因此不太清楚该怎么做。但我相信cucumberjs使用node.js.我只是看不到它引用node.js的代码。

我更新到node.js的最新版本。这是我的终端运行我的cucumber.js功能和我得到的新错误:

Benjamins-MacBook-Pro:Features Ben$ node -v
v4.2.3
Benjamins-MacBook-Pro:Features Ben$ node -v
v5.3.0
Benjamins-MacBook-Pro:Features Ben$ cucumber.js addItem.feature
/Users/Ben/WhatWeGrow.Web/public/Features/addItem.step.js:4
import * as a from "grocery-list";
^^^^^^

SyntaxError: Unexpected token import
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Object.Module._extensions..js (module.js:405:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at /usr/local/lib/node_modules/cucumber/lib/cucumber/cli/support_code_loader.js:63:29
    at Array.forEach (native)
    at Object.wrapper (/usr/local/lib/node_modules/cucumber/lib/cucumber/cli/support_code_loader.js:62:15)
Benjamins-MacBook-Pro:Features Ben$ 

以下是node --v8-options的{​​{1}}选项:

--harmony

1 个答案:

答案 0 :(得分:0)

Node目前还不支持EcmaScript模块。