Harmony 集合未在 NodeJS 5 中定义

Harmony Collections Aren't Defined In NodeJS 5

本文关键字:定义 NodeJS 集合 Harmony      更新时间:2023-09-26

我有一个NodeJS(v5.0.0),ExpressReact应用程序。
我插入了一些同构,因此我的一些React应用程序组件加载到 NodeJS 中。

服务器崩溃并显示错误:在我的Alt商店之一中ReferenceError: Set is not defined

import alt from '../alt';
import NewProjectActions from '../actions/NewProjectActions';
import LoginStore from './LoginStore';
import { Base64 } from 'js-base64';
import limits from '../../limits';
class NewProjectStore {
  constructor() {
    this.bindActions(NewProjectActions);
    //State
    this.activeStage = 1;
    this.projectID = null;
    this.projectName = '';
    this.hasActiveComponentFinished = false;
    this.isLoading = false;
    this.assessment = [];
    this.selectedClasses = [];
    this.assignmentsUploaded = new Set(); <------ THIS LINE FAILS
    The page goes on........

我尝试用Map替换它,它也崩溃了。奇怪的是,你可以看到我使用的是 ES6 import 的,而且运行良好。
我还检查了NodeJS Docs,它显示Harmony集合附带NodeJS,不需要任何运行时标志。

我刚刚更新了我的Babel所以也许这与它有关。
更新:只是为了详细说明,我开始使用Require Hooks

有人有想法吗?不用说,我已经通过谷歌,什么也没找到。

感谢您的任何帮助!

更新:我尝试在server.js页面中使用Set并且它起作用了。似乎问题确实Babel浏览这些页面,而不是NodeJS.我仍然不知道为什么它不同意 ES6 集合。

下面是完整的错误堆栈跟踪:

ReferenceError: Set is not defined
    at Store.NewProjectStore (NewProjectStore.js:18:36)
    at new Store (/home/ec2-user/projects/peer_reviews/node_modules/alt/lib/store/index.js:155:73)
    at Object.createStoreFromClass (/home/ec2-user/projects/peer_reviews/node_modules/alt/lib/store/index.js:175:15)
    at Alt.createStore (/home/ec2-user/projects/peer_reviews/node_modules/alt/lib/index.js:129:77)
    at Object.<anonymous> (NewProjectStore.js:99:20)
    at Module._compile (module.js:456:26)
    at loader (/home/ec2-user/projects/peer_reviews/node_modules/babel-register/lib/node.js:130:5)
    at Object.require.extensions.(anonymous function) [as .js] (/home/ec2-user/projects/peer_reviews/node_modules/babel-register/lib/node.js:140:7)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/ec2-user/projects/peer_reviews/app/routes.js:17:24)
    at Module._compile (module.js:456:26)
    at loader (/home/ec2-user/projects/peer_reviews/node_modules/babel-register/lib/node.js:130:5)
    at Object.require.extensions.(anonymous function) [as .js] (/home/ec2-user/projects/peer_reviews/node_modules/babel-register/lib/node.js:140:7)
我相信

错误与BabelRequire Hooks有关。文档说它更适合简单使用,而且由于Babel 6太新了,我想这只是一个错误。

我通过从命令行切换到激活Babel来修复它。
可以在此处找到以各种方式激活Babel的说明。

祝大家好运。