You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS新手求助:TypeError: _user2.default is not a constructor报错问题

解决TypeError: _user2.default is not a constructor的问题

嘿,我懂你现在踩的坑啦——你把普通对象当成构造函数来实例化了,这就是为啥会抛出这个错误!咱们一步步理清楚:

问题根源

先看你的users.js,你导出的是newuser这个已经创建好的普通对象:

var newuser = { 
  firstname:'Tony', 
  lastname: 'franklyn', 
  email: `franky@gmail.com`, 
  password: 'Franklin123', 
}; 
module.exports = { newuser };

而在你的sign up文件里,你写了const newUser = new news();——这里的new关键字是用来实例化构造函数(比如用function或class定义的可生成实例的函数)的,但你导入的news只是一个包含普通对象的模块,根本不是构造函数,所以JS会报错说它不是构造函数。

两种解决方法

方法一:直接引用导出的现成对象(适合你当前需求)

既然你已经在users.js里定义好了newuser对象,直接导入后访问它的属性就行,完全不需要用new:

修改sign up文件的代码:

// 写法1:解构导入(更直观)
import { newuser } from './users.js'; 
// 直接用对象的firstname属性
.typeText(newuser.firstname)

// 写法2:整体导入
import userData from './users.js';
// 通过属性访问
.typeText(userData.newuser.firstname)

注意:你原来写的Newuser.firstname大小写不对,变量名是newuser(小写开头),要和定义的保持一致。

方法二:改成构造函数(如果需要生成多个用户实例)

要是你本来的目的是想创建可复用的用户模板,那可以把newuser改成构造函数:

修改users.js:

// 定义构造函数(惯例首字母大写)
function Newuser(firstname, lastname, email, password) {
  this.firstname = firstname;
  this.lastname = lastname;
  this.email = email;
  this.password = password;
}

// 导出构造函数
module.exports = { Newuser };

然后在sign up文件里:

import { Newuser } from './users.js'; 
// 用new实例化一个新用户
const newUser = new Newuser('Tony', 'franklyn', 'franky@gmail.com', 'Franklin123');
// 访问实例的firstname属性
.typeText(newUser.firstname)

不过看你最初的代码,只是想引用一个现成的用户对象属性,所以方法一完全够用啦~

内容的提问来源于stack exchange,提问作者Akeem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:24:54