Node.js 在nodejs项目中使用es6类的正确方法

Node.js 在nodejs项目中使用es6类的正确方法,node.js,class,ecmascript-6,Node.js,Class,Ecmascript 6,我希望能够使用nodejs 4.1.2的酷炫es6类功能 我创建了以下项目: a、 js: index.js: require('./a.js'); var b = new a(5); 如您所见,我创建了一个简单的类,它的构造函数获取一个参数。在include中,我需要该类并基于该类创建一个新对象。很简单。。但我仍然得到以下错误: SyntaxError: Block-scoped declarations (let, const, function, class) not yet suppo

我希望能够使用nodejs 4.1.2的酷炫es6类功能

我创建了以下项目:

a、 js:

index.js:

require('./a.js');
var b = new a(5);
如您所见,我创建了一个简单的类,它的构造函数获取一个参数。在include中,我需要该类并基于该类创建一个新对象。很简单。。但我仍然得到以下错误:

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:413:25)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/Users/ufk/work-projects/bingo/server/bingo-tiny/index.js:1:63)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
SyntaxError:在严格模式外尚不支持块作用域声明(let、const、函数、类)
在exports.runInThisContext(vm.js:53:16)
在模块处编译(Module.js:413:25)
在Object.Module.\u extensions..js(Module.js:452:10)
在Module.load(Module.js:355:32)
在Function.Module.\u加载(Module.js:310:12)
at Module.require(Module.js:365:17)
根据需要(module.js:384:17)
反对。(/Users/ufk/workprojects/bingo/server/bingo-tiny/index.js:1:63)
在模块处编译(Module.js:434:26)
在Object.Module.\u extensions..js(Module.js:452:10)

有什么想法吗?

我仍然不明白为什么需要“严格使用”,但这是有效的代码:

index.js:

"use strict"; 
var a = require('./a.js');
var b = new a(5);
a、 js:


或者你可以这样跑:


节点——使用_strictindex.js

我不需要启用严格模式吗?默认情况下它没有启用否?你需要启用严格模式,默认情况下它还没有启用。我添加了“使用严格”;在index.js的开头,但结果是一样的。你在每个模块的开头都需要它。“我仍然不明白为什么需要‘严格使用’”我认为错误信息非常清楚,不是吗?“块作用域声明(let、const、function、class)在严格模式外尚不受支持”您需要它,因为
class
在严格模式外尚不受支持。这比在脚本中使用“use strict”要好得多。另外,参数的顺序似乎很重要:
node index.js--use_strict
不起作用。在严格模式下运行整个应用程序意味着您将无法使用假定未在严格模式下运行的模块。如果您这样做,您可能会发现自己正在进行大量重构。
"use strict"; 
var a = require('./a.js');
var b = new a(5);
"use strict";
class a {
 constructor(test) {
  a.test=test;
 } 
}
module.exports=a;