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
相关产品推荐
相关产品推荐

