Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Nodejs上的Javascript ES6 : TypeError: object不是构造函数

Nodejs上的Javascript ES6 : TypeError: object不是构造函数
EN

Stack Overflow用户
提问于 2016-07-27 10:20:25
回答 2查看 10.1K关注 0票数 5

我将这个示例类sync.js作为我的项目中的一个模块。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'use strict';

export default class Sync{

    constructor(dbConnection){
        this.dbConnection = dbConnection;
    }

    test(){
        return "This is a test " + this.dbConnection;
    }
}

然后,在我的控制器上,我使用这个类作为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'use strict';

import Sync from '../../path/to/module'; // <-- works fine

const sync = new Sync('CONNECTION!'); // <-- meh

console.log(sync.test());

我原以为像这样的东西会被登录到控制台This is a test CONNECTION!上。但是相反,我得到了这个错误。TypeError: object is not a constructor

我做错什么了?

顺便说一句,如果我删除了行const sync = new Sync('CONNECTION!');,并将console.log()更改为console.log(Sync.test());,输出This is a test undefined就会打印出来,这与我所期望的差不多。但我的任命有什么问题吗?

WTF?

编辑

伙计们,我想我发现了问题,基于@JLRisherem035指出,它是返回类的实例,而不是类本身。实际上,有一个导入index.js js文件并导出为export default new Sync();'./sync'。这是整个index.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'use strict';

import Sync from './sync';

export default new Sync(); // <-- potential prodigal code

模块树看起来像这样。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module
  |
  |_ lib
  |  |_ index.js // this is the index.js I am talking about
  |  |_ sync.js
  |
  |_ index.js // the entry point, contains just `module.exports = require('./lib');`

现在。如何导出export default new Sync();而不执行new

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-27 10:28:10

编辑2

如何导出默认的新同步();而不执行新的?

只需从new中删除module/lib/index.js关键字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Sync from './sync';

export default Sync;

或直接从module/lib/sync.js导入

编辑1

根据你所说的被记录下来,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Sync { dbConnection: undefined }

您的导入似乎是返回类的一个实例(它是一个对象),而不是类定义本身。

所以console.log(new Sync())会回报你说的话,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Sync {

  constructor(dbConnection) {
    this.dbConnection = dbConnection;
  }

  test() {
    return "This is a test " + this.dbConnection;
  }
}

console.log(new Sync());

不是console.log(Sync)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Sync {

  constructor(dbConnection) {
    this.dbConnection = dbConnection;
  }

  test() {
    return "This is a test " + this.dbConnection;
  }
}

console.log(Sync);

您确定在导出之前没有给new Sync打电话吗?

初始答案

所讨论的代码运行良好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'use strict';

class Sync {

  constructor(dbConnection) {
    this.dbConnection = dbConnection;
  }

  test() {
    return "This is a test " + this.dbConnection;
  }
}

const sync = new Sync('CONNECTION!');

console.log(sync.test());

根据您的错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TypeError: object is not a constructor

您的import没有返回您认为正在返回的内容,而且您正在尝试new一些无法实例化的内容。

很可能您的import路径是错误的。

票数 4
EN

Stack Overflow用户

发布于 2016-12-15 16:49:43

因为这是google的最高结果:

如果在Node中使用require()语句导入类并引入循环依赖项,则会突然出现此错误,因为require()返回的是{}而不是类。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38620462

复制
相关文章
TypeError: object()
对于上面这个错误,很容易迷惑我们,因为这个错误信息没有很明确的指出,到底是哪段代码除了问题。那这个错误是怎么产生的了,请听我细细道来。
py3study
2020/01/06
1.1K0
JavaScript的构造函数
在Java语言中,我们使用构造函数是实例化对象的过程,在JavaScript语言中我们可以使用构造函数的方式创建对象,如:
伯爵
2019/10/09
1K0
JavaScript的构造函数
javascript构造函数
我们昨天前几天讨论过构造函数constructor,得出了结论 constructor是原型对象上的一个属性,默认指向这个原型的构造函数 这个结论貌似对我们平时的工作中似乎并没有什么用处,那构造函数,就真的没什么用处吗?
陌上寒
2019/04/02
1K0
javascript构造函数
Javascript构造函数
     构造函数注意事项: 1.默认函数首字母大写 2.构造函数并没有显示返回任何东西。new 操作符会自动创建给定的类型并返回他们,当调用构造函数时,new会自动创建this对象,且类型就是构造函数类型。 3.也可以在构造函数中显示调用return.如果返回的值是一个对象,它会代替新创建的对象实例返回。如果返回的值是一个原始类型,它会被忽略,新创建的实例会被返回。 function Person( name){                 this.name =name;            
hbbliyong
2018/03/06
1.4K0
Javascript构造函数
JavaScript非构造函数的继承( object()方法、浅拷贝与深拷贝 )
这里的 object() 函数,就是把子对象的 prototype 属性,指向父对象,从而使得子对象与父对象连在一起。
Leophen
2019/08/23
6610
ES6构造函数继承
构造函数继承是一种通过创建子类来继承父类的属性和方法的方式。通过构造函数继承,子类可以获得父类的实例属性,并且可以调用父类的构造函数来初始化这些属性。这种继承方式允许子类扩展父类的功能,并添加自己的属性和方法。
堕落飞鸟
2023/05/23
3590
JavaScript构造函数的继承
使用 call 或 apply 方法,将父对象的构造函数绑定在子对象上,即在子对象构造函数中加一行:
Leophen
2019/08/23
9780
解析Javascript构造函数
首先判断this是否为Book的实例,不是就返回新的实例。经常用于解决在构造函数前面忘记使用new的情况,如果没有使用在function前面使用new,那就按正常的函数执行。那为什么这里可以这么使用?
疯狂的技术宅
2019/03/28
6080
浅谈JavaScript构造函数
提到“构造函数”,大部分人会联想到Java类的概念,JavaScript也有构造函数,其使用语法与Java或者其他基于类的语言中创建对象的语法相似。
娜姐
2022/05/13
3390
JavaScript 工厂函数 vs 构造函数
当谈到JavaScript语言与其他编程语言相比时,你可能会听到一些令人困惑东西,其中之一是工厂函数和构造函数。
前端小智@大迁世界
2019/06/15
1.1K0
javascript当中的构造函数的用法
5)构造函数的用法: 例 3.5.1 <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> </head> <script> function Student(name, age) { /* 马克-to-win:later on we can use it in var doc = new ActiveXObject( "Microsoft.XMLDOM" ); doc.async="false"; doc.load(str); when a property has a this, means that this property is a member property. */ this.name = name; this.age = age; this.parti = function() { document.writeln("名字是:" + this.name + "<br>"); document.writeln("年纪是:" + this.age + "<br>"); }; } var p = new Student('jeri', 3); document.writeln("typeof p is " + typeof(p)); //typeof(p) is object p.parti(); p.age = 4; p.parti(); /*the following two methods can also access some properties.*/ document.writeln("" + p["age"]); document.writeln("" + p["a" + "ge"]); if (p instanceof Student) document.writeln("p是Student的实例<br>"); /*javascript 中的对象全部是Object 的子类 Because this object is the topmost parent object in the prototype inheritance hierarchy, all other object classes inherit its methods and properties. It's a close enough call that JavaScript 2.0 may well move it into the class-based object-oriented category at which time the prototype inheritance would be replaced with super-class/sub-class mechanisms and the arguments become null and void. */ /*When the Global object is created, it always has at least the following properties: Object object Function object Array object String object Boolean object Number object Date object Math object Value properties */ if (p instanceof Object) document.writeln("p是Object的实例"); </script>
马克java社区
2019/10/06
5290
javascript当中的构造函数的用法
前端基础-JavaScript构造函数
JavaScript 语言使用构造函数作为对象的模板。 所谓 ”构造函数”,就是一个普通的函数,只不过我们专门用它来生成对象(new 构造函数),这样使用的函数,就是构造函数;
cwl_java
2020/03/26
5690
面试官问:JS的继承
用过 React的读者知道,经常用 extends继承 React.Component。
若川
2020/03/19
7490
JavaScript如何借用构造函数继承
这篇文章主要介绍了JavaScript如何借用构造函数继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
用户1289394
2021/10/13
8890
Django 错误:TypeError at / 'bool' object is not callable
使用 Django自带的 auth 用户验证功能,编写函数,使用 is_authenticated 检查用户是否登录,结果报错:
希希里之海
2018/08/02
8640
PYES异常: TypeError: 'NoneType' object is not callable
这个异常通常都是由mapping中的部分字段类型设置错误,或者索引和映射书写有错误,以及格式错误导致的。
我是李超人
2020/08/21
9220
2、Uncaught TypeError: Object(…) is not a function at resetStoreState
2、Uncaught TypeError: Object(…) is not a function at resetStoreState
Qwe7
2022/06/18
8580
navigator对象属性_javascript构造函数
注意: 没有应用于 navigator 对象的公开标准,不过所有浏览器都支持该对象。
全栈程序员站长
2022/11/04
9210
JS 继承
用过 React的读者知道,经常用 extends继承 React.Component:
grain先森
2019/03/28
2.9K0
JS 继承
点击加载更多

相似问题

Nodejs TypeError“不是构造函数”

10

TypeError:在构造Javascript / new时,Object不是Object.<anonymous>上的函数

17

Mongoose TypeError: Object不是构造函数

11

NodeJS & GCP PubSub - TypeError: PubSub不是Object.<anonymous>的构造函数

226

NodeJS TypeError:模型不是构造函数

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文