Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js v6.2.0类扩展不是函数错误吗?_Javascript_Node.js_Ecmascript 6 - Fatal编程技术网

Javascript Node.js v6.2.0类扩展不是函数错误吗?

Javascript Node.js v6.2.0类扩展不是函数错误吗?,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,因此,我尝试在node js中扩展一个类,编译器不断返回以下错误: TypeError: Class extends value #<Object> is not a function or null /views/VICE.js: 我知道node支持这些es6功能,所以我不确定它们为什么不工作 编辑: 我不确定这是否会发生,但当我记录我的ventionrequire时,它返回一个空对象{} console.log (Venue) // This returns {} ???

因此,我尝试在node js中扩展一个类,编译器不断返回以下错误:

TypeError: Class extends value #<Object> is not a function or null
/views/VICE.js: 我知道node支持这些
es6功能,所以我不确定它们为什么不工作

编辑: 我不确定这是否会发生,但当我记录我的
vention
require时,它返回一个空对象
{}

console.log  (Venue) // This returns {} ???

因此,我的代码中有一个循环引用,我在
中导入了正在扩展的类,并将其导入到正在扩展的类中(twister:p)

显而易见的解决办法是简单地删除
extends
引用,然后找到另一种方法来实现我想要实现的目标。在我的例子中,它将
vention
类属性向下传递到
VenueViews
构造函数中


例如
var x=VenueViews(this)

在我的例子中,由于我试图在Typescript中设置工厂模式,这与@James111遇到的问题(循环导入)是相同的。我的解决方案是将代码移动到文件中,类似于以下内容:

// ./src/interface.ts
import { ConcreteClass } from './concrete';

export interface BaseInterface {
   someFunction(): any;
}

export class Factory {
  static build(): BaseInterface {
     return new ConcreteClass();
  }
}

// ./src/base.ts
import { BaseInterface } from './interface';
class BaseClass implements BaseInterface {
  someFunction(): any {
    return true;
  }
}

// ./src/concrete.ts
import { BaseClass } from './base';
export class ConcreteClass extends BaseClass {
  someFunction(): any {
    return false;
  }
}

我曾经遇到过类似的问题,在检查了所有的解决方法后,最终通过删除node_modules文件夹并运行
npm I

解决了问题。今天早些时候,一些人遇到了相同的问题:。问题:循环引用。解决方案:找到一种避免循环引用的方法。但我的代码中有什么是循环的?我只是想继承所有
vention
类属性,并在
VenueViews
类中使用它们@FelixKling“关于我的代码有什么循环?”
/views/venue.js
导入
/handler/venue.js
哪个导入
/views/venue.js
哪个导入
/handler/venue.js
。。。。我可以继续说:你的观点不应该从场地继承。是的,现在我看到了@FelixKling没有注意到:哦,thx,循环引用对我来说就像呼吸一样!>将正在扩展的类导入到自己正在扩展的类中,对我来说,这听起来像是设计糟糕的标志。没必要,但想想看。在我的例子中,一个文件中有一个基类B,其他文件中有派生类X、Y、Z。然后在sam文件中,B是,我有另一个使用X、Y和Z的类M。我刚刚将B移到一个单独的文件中。现在是2018年,情况仍然如此…:(使用react,webpack无法很好地处理类的扩展。@Blaskovicz您能详细解释一下它是如何工作的吗?
console.log  (Venue) // This returns {} ???
// ./src/interface.ts
import { ConcreteClass } from './concrete';

export interface BaseInterface {
   someFunction(): any;
}

export class Factory {
  static build(): BaseInterface {
     return new ConcreteClass();
  }
}

// ./src/base.ts
import { BaseInterface } from './interface';
class BaseClass implements BaseInterface {
  someFunction(): any {
    return true;
  }
}

// ./src/concrete.ts
import { BaseClass } from './base';
export class ConcreteClass extends BaseClass {
  someFunction(): any {
    return false;
  }
}