2017-01-07 54 views
0

首先是非法的构造,我想是说,我真的不知道我怎么能解释一下我做才能得到的头衔(uncaught TypeError: Illegal constructor)中提到的错误。我正在使用gulpfile来编译我的Ecmascript 6为纯Javascript。我gulpfile看起来是这样的:与EcmaScript的6

var gulp = require('gulp'); 
var concat = require('gulp-concat'); 
var babel = require('gulp-babel'); 

gulp.task('compile', function() { 
    return gulp.src(['resources/assets/js/*.js', 'resources/assets/js/components/*.js']) 
     .pipe(babel({ 
       presets: ['es2015'] 
     }).on('error', logError)) 
     .pipe(concat('bundle.js')) 
     .pipe(gulp.dest('public/js')); 
}); 

gulp.task('watch', function() { 
    gulp.watch('resources/assets/js/**/*', ['compile']); 
}) 

gulp.task('default', ['watch']); 

function logError(err) { 
    console.log(err); 
} 

我有所有的文件被连接到一个文件(bundle.js),被用巴贝尔编译后的文件系统。

在浏览器控制台(或者Chrome或Firefox),将出现错误,并且它位于下一行:

var _this = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, element)); 

The error within the console

这是本非编译代码:

class Dropdown extends Node { 

    constructor(element) { 
     super(element); 

     this.registerEvents(['click', 'change', 'blur']); 
    } 

    onClick() { 
     this.$element.addClass('clicked'); 
    } 
} 

这是同一类的编译代码:

var Dropdown = function (_Node) { 
    _inherits(Dropdown, _Node); 

    function Dropdown(element) { 
     _classCallCheck(this, Dropdown); 

     var _this = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, element)); 

     _this.registerEvents(['click', 'change', 'blur']); 

     return _this; 
    } 

    _createClass(Dropdown, [{ 
     key: 'onClick', 
     value: function onClick() { 
      this.$element.addClass('clicked'); 
     } 
    }]); 

    return Dropdown; 
}(Node); 

我不使用export default Dropdown因为我不是在导入其他模块的模块(这是没有必要,因为每个文件转换为一个文件,这里的一切是访问)。

我做了一些研究,为什么peoeple得到这个错误是因为当时那里没有被允许大写字母的唯一原因。我没有发现这个错误的原因。有人有一个想法,为什么我得到这个错误?并且有人有解决方案吗?

+0

什么是'Node'?如果它是DOM的'Node',那么你不能用JavaScript来扩展它。 –

+0

如果你不能实例化'Node'(你不能),你显然不能实例化子类。 – estus

+0

你需要导入你需要扩展或者是它也行,如果有要扩展的类在同一个文件(所以没有'出口默认superClass')定义的文件? – Galago

回答

1

它看起来像你想扩展DOM的Node。你不能这么做,这是一个主机提供的功能,它与必要的JavaScript管道不兼容。

相关问题