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

ESM项目引入rollup-plugin-multi-input报multi is not a function问题问询

问题原因

你遇到的报错是ESM项目导入CommonJS格式包的默认导出适配问题:

  1. rollup-plugin-multi-input 仅提供CommonJS格式的产物,没有原生ESM导出。在设置了"type": "module"的项目中,Node.js处理ESM导入CommonJS包的逻辑是:将整个module.exports对象作为默认导入的返回值。
  2. 该插件的导出逻辑是exports.default = 函数,所以你默认导入拿到的multi实际上是{ default: [Function] }对象,而非函数本身,直接调用multi()自然会抛出「不是函数」的错误。
  3. 你用createRequire导入时拿到的也是同一个module.exports对象,没有取default属性的情况下调用依然会报错。

而@rollup/plugin-multi-entry能正常使用,是因为它同时提供了ESM格式的.mjs产物,原生使用export default导出函数,适配ESM项目的导入逻辑,不需要额外处理。

解决方法

有两种简单的修复方案:

方案1:直接取默认导出的default属性

调用时添加.default即可:

import multi from 'rollup-plugin-multi-input';

// 插件配置里调用.default()
plugins: [
  multi.default(),
  // 其余插件不变
]

如果用createRequire导入,写法如下:

import { createRequire } from "module";
const require = createRequire(import.meta.url);
const multi = require('rollup-plugin-multi-input');

// 调用时取default
plugins: [
  multi.default(),
]

方案2:导入时重命名default属性

可以在导入语句直接指定取default属性赋值给变量,调用时不需要改写法:

import { default as multi } from 'rollup-plugin-multi-input';

// 直接正常调用即可
plugins: [
  multi(),
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:57:07