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

Rollup动态require配置无效求助:无法引入deps.js

解决Rollup动态Require"deps"失败的问题

问题背景

项目结构:

.
├── deps
│   ├── deps.js
│   └── package.json
└── module1
    ├── mod1.js
    ├── package.json
    ├── rollup.config.js
    └── test.js

mod1.js中使用动态require("deps")导入依赖,运行测试时出现错误:

Error: Could not dynamically require "deps". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.

已配置Rollup的commonjs插件:

commonjs({
    dynamicRequireTargets: [
        "../deps/deps.js",
    ],
})

但问题未解决。

解决方案

1. 调整dynamicRequireTargets为Glob模式并配置模块解析

你的代码中是通过模块名"deps"动态导入,而非相对文件路径,现有配置的路径无法匹配模块名的解析结果。可以改用Glob模式覆盖deps目录下的所有文件,同时添加模块解析插件:

import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';

export default {
  plugins: [
    // 让Rollup能解析本地模块
    resolve(),
    commonjs({
      dynamicRequireTargets: [
        '../deps/**/*.js' // 匹配deps目录下所有js文件
      ]
    })
  ]
};

2. 将deps作为本地npm包引入

如果deps是一个独立的本地包,先在module1/package.json中添加本地依赖:

"dependencies": {
  "deps": "file:../deps"
}

执行npm install安装依赖后,Rollup就能通过模块名"deps"找到对应文件,原有dynamicRequireTargets配置即可生效。

3. 修改动态Require为相对文件路径

直接把mod1.js中的动态导入改为相对路径:

require('../deps/deps.js');

此时你原有的dynamicRequireTargets配置路径完全匹配,即可解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:57:01