Skip to content

Vite SSR doesn't support "Arbitrary Module Namespace Identifiers" #17426

@hi-ogawa

Description

@hi-ogawa

Describe the bug

We had a report on Vitest vitest-dev/vitest#5851 and it looks like the issue is in Vite's SSR transform.

// file-2.js
const something = "Something";

export { something as "arbitrary string" };

export { something as normalIdentifier };
# [OK] import from node
$ node repro-node.js
[Module: null prototype] {
  'arbitrary string': 'Something',
  normalIdentifier: 'Something'
}

# [NOT OK] import from Vite ssrLoadModule
$ node repro-vite.js
{
  undefined: [Getter],
  normalIdentifier: [Getter],
  [Symbol(Symbol.toStringTag)]: 'Module'
}

# [OK] import from Vite client
$ pnpm dev

links

Reproduction

https://github.com/hi-ogawa/reproductions/tree/main/vite-ssr-arbitrary-module-namespace-identifier

Steps to reproduce

Also on stackblitz https://stackblitz.com/github/hi-ogawa/reproductions/tree/main/vite-ssr-arbitrary-module-namespace-identifier

System Info

(stackblitz)

  System:
    OS: Linux 5.0 undefined
    CPU: (8) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 0 Bytes / 0 Bytes
    Shell: 1.0 - /bin/jsh
  Binaries:
    Node: 18.20.3 - /usr/local/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 10.2.3 - /usr/local/bin/npm
    pnpm: 8.15.6 - /usr/local/bin/pnpm
  npmPackages:
    vite: ^5.2.13 => 5.2.13

Used Package Manager

pnpm

Logs

No response

Validations

Metadata

Metadata

Assignees

No one assigned

    Labels

    feat: ssrp3-minor-bugAn edge case that only affects very specific usage (priority)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions