Это потому, что количество это число, а не объект. Импортируя default, вы присваиваете значение count новой переменной. По имени импорта у вас есть только для чтения скопировать как объект. Учтите это:
// counter.js
export let count = {a:0};
export const incrementCount = () => count.a += 1;
export default (function(){ return count.a})();
Когда вы запустите:
// main-default.js
import countdefault, { count, incrementCount } from './counter.mjs';
console.log(countdefault, count);
incrementCount();
incrementCount();
console.log(countdefault, count);
, вы получите:
0 {a: 0}
0 {a:2}
но при изменении экспорта счетчика на объект:
// counter.js
export let count = {a:0};
export const incrementCount = () => count.a += 1;
export default (function(){ return count})();
вы получите:
{a: 0} {a: 0}
{a: 2} {a: 2}