Skip to content

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

Open

Description

@Tobio89

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

Activity

  1. Tobio89 commented on Dec 10, 2024

    @Tobio89
    Author

    btw the TSConfig it's using looks like this:

    {
      "extends": "../../tsconfig.build.json",
      "compilerOptions": {
        "incremental": true,
        "target": "ESNext",
        "module": "ESNext",
        "outDir": "./dist",
        "rootDir": "./src",
        "baseUrl": ".",
        "jsx": "react",
        "lib": ["DOM", "ESNext"],
        "composite": true,
        "declaration": true,
        "typeRoots": ["./node_modules/@types", "./src/@types", "./src/types"]
      },
      "include": ["src/**/*"],
      "references": []
    }

    and the extended file looks like this:

    {
      "extends": "./tsconfig.base.json",
      "compilerOptions": {
        "noEmit": false,
        "noEmitOnError": true
      }
    }
  2. rschristian commented on Dec 10, 2024

    @rschristian
    Collaborator

    A reproduction would be helpful, are you using microbundle or microbundle-crl? This sounds like an issue the latter would cause.

  3. Tobio89 commented on Dec 10, 2024

    @Tobio89
    Author

    We're just using microbundle. I can try to put a repro repository together if that will help.

  4. rschristian commented on Dec 10, 2024

    @rschristian
    Collaborator

    A repro is always helpful and almost always necessary.

    I can't reproduce so will definitely need a minimal reproduction. Babel shouldn't be running against .d.ts files at all, not quite sure how you've done that.

  5. Tobio89 commented on Dec 10, 2024

    @Tobio89
    Author

    I tried to reproduce it in another project but it hasn't happened yet :S

  6. Tobio89 commented on Dec 10, 2024

    @Tobio89
    Author

    What's more, I removed the babelrc file from the actual project, and it built as normal. I'll fiddle with it a bit more and see if it breaks again, and if not... false alarm 😅

  7. rschristian commented on Dec 10, 2024

    @rschristian
    Collaborator

    No worries, feel free to ping if/when you do find something out.

    One thing that might be worth trying is uninstalling & reinstalling microbundle into your project. Sometimes transitive deps (dependencies of dependencies) get stuck on odd & bugged versions, reinstalling tends to fix that.

  8. Tobio89 commented on Dec 10, 2024

    @Tobio89
    Author

    It might also be that it was getting stuck on this babel issue with 0.14.x, and then by upgrading, it went away but the .babelrc file was then causing the other issue to remain. Hmm...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions