developit / developit/microbundle
Error: Unexpected token when including a file with `declare namespace` in it.
- Dominant language
- JavaScript
- Stars
- 8.1k
- Forks
- 358
- PR merge metrics
- No merged PRs in 30d
Description
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
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the reported command, `microbundle --jsx React.createElement --tsconfig tsconfig.build.json`, using the referenced `OpenSeadragonV5.d.ts` file. Start by inspecting `tsconfig.build.json` and `.babelrc.json` to see how declaration files and `declare namespace` are parsed. Done means the package builds without the unexpected-token or Babel syntax errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- babel, javascript, typescript
- Domain
- build-system, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100