Closed
Description
I have a file containing the following code:
namespace B {
export function c() { }
}
export namespace A {
export const { c } = B;
export function a() { }
export function b() { }
}
console.log(A);When building it with vite it gets turned to this:
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.alfa = {}));
})(this, (function (exports) { 'use strict';
var B;
((B2) => {
function c() {
}
B2.c = c;
})(B || (B = {}));
exports.A = void 0;
((A2) => {
({ c: A2.c } = B);
function a() {
}
A2.a = a;
function b() {
}
A2.b = b;
})(exports.A || (exports.A = {}));
console.log(exports.A);
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
}));And if I run it, it logs { c: [Function: c], a: [Function: a], b: [Function: b] }.
If I use vite-plugin-solid AND the file is a .tsx, the build result is the following:
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.alfa = {}));
})(this, (function (exports) { 'use strict';
let B;
(function (_B) {
function c() {}
_B.c = c;
})(B || (B = {}));
exports.A = void 0;
(function (_A) {
const {
c
} = B;
_A.c = c;
function b() {}
_A.b = b;
})(exports.A || (exports.A = {}));
console.log(exports.A);
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
}));And it outputs { c: [Function: c], b: [Function: b] } when ran.
Why does "A.a" gets removed from the namespace?
Moreover, why does changing the code like this works?
namespace B {
export function c() { }
}
export namespace A {
export function a() { }
export function b() { }
export const { c } = B; // ← Moved on the bottom of the namespace
}
console.log(A);Metadata
Metadata
Assignees
Labels
No labels
Activity
brenelz commentedon Aug 21, 2026
Is this solved?
AFatNiBBa commentedon Sep 1, 2026
I tested it in a new app created via
npm init solid@latestand it seems to work, but then I tested it on the Solid Playground and it doesn't therebirkskyum commentedon Oct 30, 2026
fixed in solid2 (next branch of solid-vite-plugin)