diff --git a/.changeset/eight-toes-pump.md b/.changeset/eight-toes-pump.md new file mode 100644 index 0000000..bd89f98 --- /dev/null +++ b/.changeset/eight-toes-pump.md @@ -0,0 +1,5 @@ +--- +"microbundle": patch +--- + +Fix crash when traversing `"exports"` objects (#852) diff --git a/src/index.js b/src/index.js index ed1e3f6..7ad55a0 100644 --- a/src/index.js +++ b/src/index.js @@ -260,9 +260,12 @@ function replaceName(filename, name) { ); } -function walk(exports) { +function walk(exports, includeDefault) { + if (!exports) return null; if (typeof exports === 'string') return exports; - return walk(exports['.'] || exports.import || exports.module); + let p = exports['.'] || exports.import || exports.module; + if (!p && includeDefault) p = exports.default; + return walk(p, includeDefault); } function getMain({ options, entry, format }) { @@ -296,7 +299,7 @@ function getMain({ options, entry, format }) { mainNoExtension, ); mainsByFormat.modern = replaceName( - (pkg.exports && walk(pkg.exports)) || + (pkg.exports && walk(pkg.exports, pkg.type === 'module')) || (pkg.syntax && pkg.syntax.esmodules) || pkg.esmodule || 'x.modern.js',