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

如何在Vue.js组件中使用普通JS类,解决new实例时报not a constructor错误

问题修复方案

你遇到的报错本质是基础的模块化导出缺失问题,和Vue框架本身无关,Vue完全支持原生普通JS类的使用,不需要迁移到其他框架。
首先修改Test.js,添加默认导出规则,否则你导入的Test会是undefined,实例化时就会抛出非构造函数的错误:

// Test.js 完整代码
export default class Test
{
    constructor()
    {
        this.a = 'test';
    }
    
    test()
    {
        console.log( "test : " + this.a );
    }
}

其次检查Vue组件的语法,你原代码的name属性后缺少合法的分隔逗号,部分严格的语法校验环境也会抛出异常,调整后组件代码如下:

<script>
import Test from './Test.js'

export default {
    name: "whatever",
    mounted() {
        const test = new Test();
        test.a = "its working";
        test.test(); // 运行后控制台正常输出:test : its working
    }
}
</script>

如果调整后仍然报错,检查./Test.js的相对路径是否正确,文件名大小写是否匹配,部分打包工具对路径大小写敏感。

三大框架代码复用性说明

三个框架都支持原生JS的类、普通函数等基础复用方式,在常规业务场景下的代码复用能力没有本质差距:

  • Vue除了原生JS复用能力外,还提供了mixin、组合式函数(Vue3)、插槽、自定义指令等多种复用手段,学习成本低,灵活性高。
  • React主要通过Hooks、高阶组件、render props实现逻辑复用,颗粒度可以做到很细,但Hooks有明确的使用规则约束。
  • Angular天生基于类体系开发,配合依赖注入机制对类的支持度最高,复用逻辑的统一管理能力很强,但框架重量大,学习成本最高。
    不存在React或Angular的代码复用性明显优于Vue的情况,你当前的需求Vue完全可以满足。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:24:03