2016-08-18 62 views
7

我正在使用Intellij Idea在ES6中创建NodeJs应用程序。Intellij NodeJs 6.4.0意外令牌导出

我node.exe版本是6.4.0

我创建了一个简单的类:

//wNodeClasses.js 

'use strict'; 
export class wsUrl 
{ 
    constructor() 
    {} 
} 

我导入模块中的另一个文件:

require('../../../Root/Libs/Waldata/wsNodeClasses'); 

当我开始应用程序我总是得到错误:

d:\Dev\webDev\Root\Libs\Waldata\wsNodeClasses.js:11 
export class wsUrl 
^^^^^^ 
SyntaxError: Unexpected token export 
    at Object.exports.runInThisContext (vm.js:76:16) 
  • 我不使用任何transpiler,我想写“纯ES6代码”(我不想用巴贝尔或同等学历)

  • 我的理解是6.4.0的NodeJS可以直接解释ES6代码

  • 这里是我的Node.Exe命令行:

    -max岁的空间大小= 8192 --expose_debug_as = v8debug

我是一个新手,我想我失去了一些明显的东西,我搜索了一下,但没有找到答案

回答

4

我终于找到了问题。 使用chrome V8的NodeJs 6.4.0不支持Es6“导出”关键字或语法。

我发现了一个变通使用

//Module file 
module.exports= 
class wsUrl 
{ 
} 

,并在消费者:

var wsUrl = require('../../../Root/Libs/Waldata/wsNodeClasses'); 
... 
var MyVar = wsUrl new("test"); 

我还在寻找有多个类在同一个JS文件(模块),并导出

+0

您可以通过将对象分配给exports属性来创建多个类。例如:module.exports = {class1:wsUrl, class2:AnotherClass}。然后你可以访问它,例如:require('../../../ Root/Libs /Waldata/wsNodeClasses').class1和require('../../../ Root/Libs/Waldata/wsNodeClasses')。class2 – Sal

+0

感谢您的回答。我用了一个不同的TECHNIC(我以为这只是个人喜好的问题): //在模块 module.exports.myClass1 = A类MyClass1的{} module.exports.myClass2 = A类myClass2 {} //在主文件(消费者) var myModule = require('../../ ../根/利布斯/ Waldata/wsNodeClasses'); ... var test = new myModule .wsUrl(“param”); –

0

感谢您的回答。

我使用了不同的TECHNIC(我以为这只是一个个人喜好的事):

//In the module module.exports.myClass1=class myClass1{} 
module.exports.myClass2=class myClass2{} 

//In the main file (consumer) 
var myModule = require('../../../Root/Libs/Waldata/wsNodeClasses'); 
... 
var test=new myModule .wsUrl("param"); 

这对我的作品有6.4.0的NodeJS和IntelliJ(或webstorm)

PS:我添加一个答案,因为我的格式化我的评论时出现问题(无法进行“换行”