JavaScript 模块 - 语法错误:export.runInThisContext 中的意外保留字

JavaScript Modules - SyntaxError: Unexpected reserved word at exports.runInThisContext

本文关键字:runInThisContext 意外 保留字 export 模块 语法 错误 JavaScript      更新时间:2023-09-26
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;
    }
  }
  }

我做错了什么才能得到这个错误?谷歌搜索这个问题说:

看起来它找不到通天塔和通天塔核心。你有那些吗 您的node_modules目录?

我有很多node_modules目录,所以不太确定该怎么做。但我相信Cucumberjs使用node.js。我只是看不到它在代码中引用节点.js的位置。

我更新到最新版本的node.js。这是我运行黄瓜.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$ 

以下是我对--harmony node --v8-options选项:

es_staging (enable all completed harmony features)
        type: bool  default: false
  --harmony (enable all completed harmony features)
        type: bool  default: false
  --harmony_shipping (enable all shipped harmony fetaures)
        type: bool  default: true
  --legacy_const (legacy semantics for const in sloppy mode)
        type: bool  default: true
  --harmony_modules (enable "harmony modules" (in progress))
        type: bool  default: false
  --harmony_regexps (enable "harmony regular expression extensions" (in progress))
        type: bool  default: false
  --harmony_proxies (enable "harmony proxies" (in progress))
        type: bool  default: false
  --harmony_sloppy_function (enable "harmony sloppy function block scoping" (in progress))
        type: bool  default: false
  --harmony_sloppy_let (enable "harmony let in sloppy mode" (in progress))
        type: bool  default: false
  --harmony_unicode_regexps (enable "harmony unicode regexps" (in progress))
        type: bool  default: false
  --harmony_reflect (enable "harmony Reflect API" (in progress))
        type: bool  default: false
  --harmony_destructuring (enable "harmony destructuring" (in progress))
        type: bool  default: false
  --harmony_default_parameters (enable "harmony default parameters" (in progress))
        type: bool  default: false
  --harmony_sharedarraybuffer (enable "harmony sharedarraybuffer" (in progress))
        type: bool  default: false
  --harmony_atomics (enable "harmony atomics" (in progress))
        type: bool  default: false
  --harmony_simd (enable "harmony simd" (in progress))
        type: bool  default: false
  --harmony_array_includes (enable "harmony Array.prototype.includes")
        type: bool  default: false
  --harmony_tostring (enable "harmony toString")
        type: bool  default: false
  --harmony_concat_spreadable (enable "harmony isConcatSpreadable")
        type: bool  default: false
  --harmony_rest_parameters (enable "harmony rest parameters")
        type: bool  default: false
  --harmony_sloppy (enable "harmony features in sloppy mode")
        type: bool  default: false
  --harmony_arrow_functions (enable "harmony arrow functions")
        type: bool  default: true
  --harmony_new_target (enable "harmony new.target")
        type: bool  default: true
  --harmony_object_observe (enable "harmony Object.observe")
        type: bool  default: true
  --harmony_spreadcalls (enable "harmony spread-calls")
        type: bool  default: true
  --harmony_spread_arrays (enable "harmony spread in array literals")
        type: bool  default: true
  --harmony_object (enable "harmony Object methods")
        type: bool  default: true

Node 目前还不支持 EcmaScript 模块。

相关文章:
  • 没有找到相关文章