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

服务器崩溃,并在我的ReferenceError: Set is not defined个存储之一中出现错误:Alt

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

有人有主意吗?
不用说我已经浏览过Google,却一无所获。

谢谢你的帮助!

更新:我已经尝试在我的Set页面中使用server.js并成功了。看来问题确实是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有关的错误。 docs说它更适合简单使用,并且由于Babel 6太新了,我想这只是一个错误。

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

祝大家好运。

关于javascript - NodeJS 5中未定义和谐集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34877037/

10-15 07:41