Error: Unexpected token when including a file with `declare namespace` in it.

Author: Tobio89Created Dec 10, 2024Updated Dec 10, 2024

Hi microbundle team.

I'm trying to build a package, and I've needed to override some types since the types repo for the main dependency hasn't been updated. I was on 0.14.x before, but I updated to 0.15.1 and I still get this error.

$ microbundle --jsx React.createElement --tsconfig tsconfig.build.json
Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)

at /Users/user/Documents/osd-react-renderer/packages/renderer/src/types/OpenSeadragonV5.d.ts:3:8

1: /* eslint-disable max-classes-per-file */
2: 
3: declare namespace OpenSeadragon {
           ^
4:     export function isFunction(obj: unknown): boolean;

I actually had two errors in this file. The first error said:

osd-react-renderer: (babel plugin) SyntaxError: /Users/user/Documents/osd-react-renderer/packages/renderer/src/types/OpenSeadragonV5.d.ts: Missing semicolon. (3:7)
osd-react-renderer:   1 | /* eslint-disable max-classes-per-file */
osd-react-renderer:   2 |
osd-react-renderer: > 3 | declare namespace OpenSeadragon {
osd-react-renderer:     |        ^
osd-react-renderer:   4 |     export function isFunction(obj: unknown): boolean;
osd-react-renderer:   5 |
osd-react-renderer:   6 |     export function isCanvasTainted(canvas: HTMLCanvasElement): boolean;
osd-react-renderer: at undefined:3:7

This error I was able to resolve with a .babelrc.json file, but I can't see what configuration can be used to resolve the first error.

I noticed that previously we were able to build the app when we used declare module OpenSeadragonV2, but declare namespace` specifically is causing this.

Any suggestions on what configuration can resolve this issue?

Thanks