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

Rollup打包Vue2 Composition API模块提示ref未定义如何解决

问题修复方案

你的问题核心是Rollup配置的output.globals字段不匹配,以及部分插件配置、使用逻辑存在疏漏,按以下步骤修改即可:


1. 修正Rollup核心配置

修复globals字段映射

external数组中声明的外部依赖名必须和output.globals的键完全对应,你之前的配置中用compositionApi作为键和实际依赖名@vue/composition-api不匹配,会导致依赖引入失效。

调整插件执行顺序

@rollup/plugin-node-resolve必须放在插件队列最前方,Rollup插件执行顺序为从上到下,需要先完成依赖解析再执行后续转译逻辑。

补充buble配置

禁止buble转译ES模块语法,避免import语句被异常转换。

修改后的完整配置如下:

import commonjs from '@rollup/plugin-commonjs';
import nodeResolve from '@rollup/plugin-node-resolve';
import vue from 'rollup-plugin-vue'; 
import buble from '@rollup/plugin-buble';
import scss from 'rollup-plugin-scss';

export default {
    external: ['vue', '@vue/composition-api'],
    input: 'src/index.js',
    output: {
        name: 'BasicDropdown',
        exports: 'named',
        format: 'cjs',
        globals: {
            vue: 'Vue',
            '@vue/composition-api': 'VueCompositionAPI'
        }
    },
    plugins: [
        nodeResolve(), // 放在插件队列最前方
        scss(),
        vue({
            css: true,
            compileTemplate: true,
            scss: true,
            preprocessStyles: true
        }),
        commonjs(),
        buble({
          transforms: { modules: false } // 禁止转译ES模块语法
        }), 
    ],
};

2. 校验依赖版本

Vue2项目使用的rollup-plugin-vue必须为5.x版本,6.x及以上版本仅支持Vue3,版本不匹配会导致单文件组件内的import语句被异常丢弃。
你可以执行以下命令安装适配版本:

npm install rollup-plugin-vue@5.1.9 --save-dev

3. 校验组件代码逻辑

ref等Composition API提供的方法只能在setup()函数、组合式函数内部调用,不能放在Options API的data()、methods等选项中,你报错信息提示错误出现在data()内,需要检查是否存在把ref调用写在data选项中的违规写法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:36:01