ile tanımlanmamış şu anda ES6, node.JS ve Babel ile birden çok dosya devralma yapmaya çalışıyorum (Ben Babel kullanarak kodu ES6 dönüştürmek için kullanıyorum ES5'e 'neden Düğüm şu an ES6'yı uygulamaz. Farklı dosyaları "bağlamak" için ithalat/ihracat kullanıyorum. AslındaTypeError: Süper ifade boş olmalı veya bir işlev değil, Babeljs
Ben: Üst sınıf (File 1)
export class Point
{
constructor(x, y)
{
this.x = x;
this.y = y;
}
toString() {
return '(' + this.x + ', ' + this.y + ')';
}
}
Ve: Çocuk Sınıfı (Dosya 2)
import Point from './pointES5'
export class ColorPoint extends Point
{
constructor(x, y, color)
{
super(x, y);
this.color = color;
}
toString() {
return super.toString() + ' in ' + this.color;
}
}
Ve ana Ana (Dosya 3)
import Point from './pointES5'
import ColorPoint from './colorpointES5'
var m_point = new Point();
var m_colorpoint = new ColorPoint();
console.log(m_point.toString());
console.log(m_colorpoint.toString());
Bunu yapmak için, Ebeveyn ve Çocuk'tan toString() yöntem çağrılarını test etmek için yapıyorum.
Sonra Babel'i kullanarak kodu ES6'dan ES5'e dönüştürüyorum ve her parçayı ayrı ayrı test ediyorum, eğer tamamsa ya da yapmadıysa.
- Point (Ana) iyi ve hatasız olarak çalıştır.
- COLORPOINT (Çocuk) tamamen çalıştırın ve atmayın:
TypeError: Super expression must either be null or a function, not undefined
StackTrace ilk satırı: Sinir bozucu nedenidir
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.proto = superClass; } (It comes from the ES5 converted code (Babelified), and I can post it entirely if it's needed).
bu kod çok basit ... Ancak, hataya neden olan şeyi göremiyorum.
Ben Babil değişik versiyonlarını (5, 5.8, 6) ancak hiçbir fark yoktur ...
Ben yanlış yaptım deneyin?
PS: Söylemeyi unuttum: Sadece tek bir dosyada bunu yaptığımda ÇALIŞIR. Ama dosyası tarafından yalnızca bir sınıf ... olması benim için gerçekten önemli
:
Şimdi ne var eşdeğerdir!"Varsayılan" anahtar kelimenin ne olduğunu ve şimdi ne için kullanıldığını biraz daha anlıyorum! Yardımın için çok teşekkür ederim ! Mükemmel çalışıyor! : D – Aethyn
Paketleme için webpack'i kullanmanız durumunda, websitesi 2.0 ağacının performans amaçları için kullanacağı @ssube tarafından önerilen ikinci yaklaşımı kullanmanızı öneririz: http://2ality.com/2015/12/webpack -ağacı-shaking.html –