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

模块化rollup.config时出现无法解析模块路径错误如何解决

报错原因

Rollup 配置文件默认由 Node.js 直接加载,默认仅识别 .js 后缀的 CommonJS 格式文件,你当前的导入存在两个问题:

  1. 导入路径未带文件后缀,Node.js 无法匹配到根目录的 .ts 格式配置文件
  2. Node.js 原生不支持直接加载 TS 文件,也不会自动识别 TS 后缀

解决方案

方案1:改公共配置为JS格式(成本最低)

直接将根目录的 rollup.config.default.ts 改为 rollup.config.default.js,移除TS类型定义,用CommonJS规范导出:

// 根目录 rollup.config.default.js
function createCommonJSConfig() {
  // 原有配置逻辑
}
function createDeclarationConfig() {
  // 原有配置逻辑
}
function createESMConfig(options) {
  // 原有配置逻辑
}

module.exports = {
  createCommonJSConfig,
  createDeclarationConfig,
  createESMConfig
}

子包的 rollup.config.js 改用CommonJS规范导入,补全文件后缀:

// 单个子包的rollup.config.js
const {
  createCommonJSConfig,
  createDeclarationConfig,
  createESMConfig,
} = require('../rollup.config.default.js');

module.exports = function () {
  return [
    createDeclarationConfig(),
    createCommonJSConfig(),
    createESMConfig({ multiFileOutput: true }),
  ];
};

方案2:保留TS公共配置,新增Rollup配置加载插件

如果需要保留公共配置的TS类型能力,可以按以下步骤操作:

  1. 确保项目已安装 @rollup/plugin-typescript、typescript、tslib 依赖
  2. 子包配置文件中导入路径补全 .ts 后缀:
import {
  createCommonJSConfig,
  createDeclarationConfig,
  createESMConfig,
} from '../rollup.config.default.ts';
  1. 执行rollup打包命令时增加参数,指定配置加载插件:
rollup --config rollup.config.js --configPlugin @rollup/plugin-typescript

方案3:全TS格式配置

直接把子包的 rollup.config.js 改为 rollup.config.ts,按TS语法导入根目录的TS配置,打包时同样添加上述--configPlugin参数即可,还能获得完整的配置类型提示。

monorepo场景优化建议

你可以把公共构建配置封装为内部workspace包,比如新建packages/rollup-config子包存放所有配置逻辑,各业务子包直接依赖该内部包导入使用,无需处理相对路径,更符合monorepo的依赖管理规范。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:39:05