TypeError: ProductManager不是构造函数问题排查求助
问题排查:TypeError: ProductManager is not a constructor
核心原因
你定义ProductManager类的文件没有将类导出,导致另一个文件通过require引入时,拿到的不是可实例化的构造函数,因此无法用new关键字创建实例。
修复步骤
1. 在定义类的文件中添加导出语句
修改productos.js,在文件末尾添加module.exports = ProductManager,确保类能被其他文件正确引入:
const fs = require('fs') const filename = './productos.json' class ProductManager { products constructor() { this.products = [] } #generateID = () => { if (this.products.length === 0) return 1 return this.products[this.products.length - 1].id + 1 } addProduct(title, description, price, image, code, stock) { const id = this.#generateID() const product = {id, title, description, price, image, code, stock} // Valido que el producto tenga todos los campos if (!title || !description || !price || !image || !code || !stock) { return console.log('Error: Todos los campos son obligatorios') } //Valido que el producto ingresado no exista const productExists = this.products.some((product) => product.code === code) if (productExists) { return console.log('Error: El producto ya existe') } else { this.products.push(product) fs.writeFileSync(filename, JSON.stringify(this.products, null, '\t')) } } getProducts() { const contenido = JSON.parse(fs.readFileSync(filename, 'utf-8')) console.log(" Muestro el contenido del archivo Productos", contenido) // 补充返回值,否则接口返回的data会是undefined return contenido } } // 添加导出语句 module.exports = ProductManager
2. 验证引入逻辑
调用文件中的const ProductManager = require('./productos.js')语句无需修改,只要定义文件正确导出,就能正常实例化类。
额外优化提示
原getProducts方法只有console.log无返回值,会导致接口响应中的data为undefined,上面的修复代码已添加return contenido,确保接口能返回正确的产品数据。
内容的提问来源于stack exchange,提问作者Orwellforfai
相关产品推荐
相关产品推荐

