我需要在ShoppingCart.js文件中创建ShoppingCart类,并将其导出到测试文件中,但出现错误,提示我的类不是构造函数
我知道问题不在导入导出中,因为在创建js文件之前,我得到了找不到模块的错误。我还尝试在文件中创建该类的新实例,并且可以正常工作
file ShoppingCart.js
class ShoppingCart{
constructor(name){
this.name=name
}
}
module.exports = { ShoppingCart}
我的测试文件的代码是
const ShoppingCart = require("./ShoppingCart")
new ShoppingCart()
我运行测试文件时得到
TypeError: ShoppingCart is not a constructor
答案 0 :(得分:5)
您当前正在导出属性为ShoppingCart
的对象:
module.exports = { ShoppingCart }
// ^^ object ^^
只需导出ShoppingCart
:
module.exports = ShoppingCart;
或者,在导入时,引用对象的ShoppingCart
属性:
const { ShoppingCart } = require("./ShoppingCart")
答案 1 :(得分:0)
您正在导出具有ShoppingCart
属性的对象。
要么:
将导出更改为module.exports = ShoppingCart;
,或
将您的require
更改为const { ShoppingCart } = require("./ShoppingCart");
如果您使用的是现代版本的Node.js,则可以考虑使用ESM( E CMA S 密码 M 个单数)而是(export
/ import
):
export class ShoppingCart{
constructor(name){
this.name=name
}
}
和
import { ShoppingCart } from "./ShoppingCart.js";
new ShoppingCart();
它使用JavaScript的本机模块,而不是Node.js的CommonJS变体。在新的几年中,这将成为标准的方法。目前,要使用ESM,请使用--experimental-modules
标志和包含package.json
的{{1}}。 (或者,可以使用文件扩展名type: "module"
代替package.json
type
字段。)Details here。