我有这个文件结构
main.js
sdk.js
[sdk] // folder
- sdk/a.js
js文件内容
// sdk/a.js
export class A{}
// sdk.js
import {A} from "./sdk/a";
export {A};
// main.js
import {A} from "./sdk/a";
const a= new A();
我想使用汇总创建带有main.js
作为输入文件的捆绑软件,但是我想从import {A} from "./sdk/a";
解析模块import {A} from "./sdk";
。换句话说,我想将模块路径./sdk/a
替换为./sdk
。
我已经创建了一个插件并尝试使用resolveId
钩子,但出现错误。
这是我的插件代码
function myPlugin() {
return {
name: 'my-plugin',
resolveId(importee, importer) {
if (importee === './sdk/a') {
return "sdk.js"; // if I return sdk/a.js it will work
}
return null;
}
};
}
这是我收到的错误
RangeError: Maximum call stack size exceeded
at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14727:47)
at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)
at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14737:43)
at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)
at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14737:43)
at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)
at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14737:43)
at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)
at Module.traceVariable (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14737:43)
at Module.getVariableForExportName (D:\work\htdocs\rollup_test\node_modules\rollup\dist\rollup.js:14566:25)
如果我手动编辑代码并将main.js
中的导入更改为import {AAA} from "./sdk";
,一切正常。
注意:我正在使用汇总v1.6.0
注意:输出格式为esm