Skip to content

[Bug]: "contents" must be a string or a Uint8Array during ng build #33841

Description

@Bywdl

Which @angular/* package(s) are the source of the bug?

compiler-cli, compiler

Is this a regression?

Yes

Description

When building a completely clean, freshly generated Angular 22 project (ng new with SSR enabled), the production build (ng build) fails consistently with a "contents" must be a string or a Uint8Array error.

The project is completely pristine with no custom configurations or other third-party packages.

Key Observations:

  1. SSR Dependency: The error only occurs when Server-Side Rendering (SSR) is enabled during project generation. If I create the exact same clean project without SSR, the build succeeds.
  2. Dev Server Works: The development server (ng serve) works perfectly without any issues; it only crashes during ng build.
  3. Vite 8 / Rolldown Context: In earlier Angular 22 versions using Vite 7 (Rollup), this was not an issue. This freshly generated project uses the newer Vite 8 with the Rolldown bundler. It appears the angular-compiler plugin in esbuild fails to resolve or load these specific UI library modules during the SSR/prerendering build phase under this new architecture.

Please provide a link to a minimal reproduction of the bug

No response

Please provide the exception or error you saw

✘ [ERROR] "contents" must be a string or a Uint8Array [plugin angular-compiler]

    node_modules/esbuild/lib/main.js:534:29:
      534 │   if (mustBe !== null) throw new Error(`${quote(key)} must be ${m...
          ╵                                ^

    at getFlag (<workspace>/node_modules/esbuild/lib/main.js:534:30)
    at requestCallbacks.on-load (<workspace>/node_modules/esbuild/lib/main.js:1559:26)
    at async handleRequest (<workspace>/node_modules/esbuild/lib/main.js:909:11)

  This error came from the "onLoad" callback registered here:

    node_modules/@angular/build/src/tools/esbuild/angular/compiler-plugin.js:397:18:
      397 │             build.onLoad({ filter: /\.[cm]?js$/ }, (0, load_resul...
          ╵                   ~~~~~~

    at setup (<workspace>/node_modules/@angular/build/src/tools/esbuild/angular/compiler-plugin.js:397:19)
    at async handlePlugins (<workspace>/node_modules/esbuild/lib/main.js:1466:20)

  The plugin "angular-compiler" was triggered by this import

    src/app/shared/components/bs-reuse-tab/reuse-tab-context.service.ts:2:32:
      2 │ import { ComponentPortal } from '@angular/cdk/portal';
        ╵                                  ~~~~~~~~~~~~~~~~~~~~~


✘ [ERROR] "contents" must be a string or a Uint8Array [plugin angular-compiler]

    node_modules/esbuild/lib/main.js:534:29:
      534 │   if (mustBe !== null) throw new Error(`${quote(key)} must be ${m...
          ╵                                ^

    at getFlag (<workspace>/node_modules/esbuild/lib/main.js:534:30)
    at requestCallbacks.on-load (<workspace>/node_modules/esbuild/lib/main.js:1559:26)
    at async handleRequest (<workspace>/node_modules/esbuild/lib/main.js:909:11)

  This error came from the "onLoad" callback registered here:

    node_modules/@angular/build/src/tools/esbuild/angular/compiler-plugin.js:397:18:
      397 │             build.onLoad({ filter: /\.[cm]?js$/ }, (0, load_resul...
          ╵                   ~~~~~~

    at setup (<workspace>/node_modules/@angular/build/src/tools/esbuild/angular/compiler-plugin.js:397:19)
    at async handlePlugins (<workspace>/node_modules/esbuild/lib/main.js:1466:20)

  The plugin "angular-compiler" was triggered by this import

    src/app/shared/components/bs-reuse-tab/reuse-tab.component.ts:7:48:
      7 │ import { NzTabComponent, NzTabsComponent } from 'ng-zorro-antd/tabs';
        ╵                                                  ~~~~~~~~~~~~~~~~~~~~


✘ [ERROR] "contents" must be a string or a Uint8Array [plugin angular-compiler]

    node_modules/esbuild/lib/main.js:534:29:
      534 │   if (mustBe !== null) throw new Error(`${quote(key)} must be ${m...
          ╵                                ^

    at getFlag (<workspace>/node_modules/esbuild/lib/main.js:534:30)
    at requestCallbacks.on-load (<workspace>/node_modules/esbuild/lib/main.js:1559:26)
    at async handleRequest (<workspace>/node_modules/esbuild/lib/main.js:909:11)

Please provide the environment you discovered this bug in (run ng version)

**Environment:**
Angular CLI       : 22.1.3
Node.js           : 24.16.0
Package Manager   : npm 11.13.0
Operating System  : linux x64 (KylinOS, Kernel: 5.4.18.63-generic x86_64)

Anything else?

No response

Activity

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

    area: @angular/buildgemini-triagedLabel noting that an issue has been triaged by geminineeds: repro stepsWe cannot reproduce the issue with the information given

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions