Vite+ CLI cannot start in StackBlitz because its WASI binding is unavailable
Mantenedores costumam responder em até 1 dia
@wan9chi já está trabalhando nisso.
Desde 17/9/2026.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- node.js, rust, wasm
- Domínio
- build-system, cli, devtools
Direção de pesquisa
Comece por packages/cli/binding/index.cjs, nos caminhos de fallback do WASI e do loader citados na issue. Reproduza com o projeto do StackBlitz ou execute NAPI_RS_FORCE_WASI=error ./node_modules/.bin/vp --version para confirmar que ambas as opções de WASI estão indisponíveis. Está concluído quando um binding WASI compatível for distribuído e vp --version e vp env current funcionarem no WebContainer.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Describe the bug
The Vite+ CLI cannot start in a StackBlitz WebContainer.
A minimal project containing only [email protected] fails when it runs vp --version or vp env current. Both commands exit while loading vite-plus/binding/index.cjs, before Vite+ processes the command.
The platform-specific native binding cannot load in the WebContainer. The generated loader then checks for these WASI bindings:
./vite-plus.wasi.cjs@voidzero-dev/vite-plus-wasm32-wasi
Neither option is available:
- The published
[email protected]package contains no local WASI loader or.wasmartifact. - The npm registry returns 404 for
@voidzero-dev/vite-plus-wasm32-wasi.
Expected: Vite+ loads a compatible WASI binding and runs vp commands in the WebContainer.
Actual: Vite+ exits with Cannot find native binding.
The missing WASI distribution can also be reproduced deterministically on macOS:
NAPI_RS_FORCE_WASI=error ./node_modules/.bin/vp --version
That command reports both missing WASI options:
Error: WASI binding not found and NAPI_RS_FORCE_WASI is set to error
Cause 1:
Error: Cannot find module '@voidzero-dev/vite-plus-wasm32-wasi'
Cause 2:
Error: Cannot find module './vite-plus.wasi.cjs'
Normal macOS execution succeeds with the native binding. The forced command isolates the unavailable WASI distribution; it does not indicate a problem with the macOS native binding.
Source references
The current generated loader documents WASI as its fallback:
It first tries the bundled ./vite-plus.wasi.cjs loader and its .wasm artifacts:
It then tries @voidzero-dev/vite-plus-wasm32-wasi:
When WASI is required and neither option can load, it throws the forced-WASI error:
Related findings
- https://github.com/voidzero-dev/vite-plus/issues/2054 concerns circular binding resolution between
vite-plus-coreandvite-plus. This report concerns the unavailable WASI distribution for the Vite+ CLI itself. - https://github.com/voidzero-dev/vite-plus/pull/2067 proposed resolving Rolldown bindings through platform packages and explicitly left unsupported or fallback WASI bindings unchanged. The PR was closed without merging.
This prevents projects that use Vite+ commands from running in StackBlitz WebContainers. The reproduction contains no application code and fails with vp --version alone.
I am not currently planning a PR.
Reproduction
Steps to reproduce
- Open the StackBlitz reproduction.
- Wait for StackBlitz to install the dependencies.
- StackBlitz automatically runs
pnpm run reproduce, which invokesvp --version. - Observe that Vite+ exits while loading its native binding.
- Run
pnpm run environmentin the terminal. - Observe that
vp env currentfails during the same binding-loading step.
To isolate the unavailable WASI distribution on macOS:
- Clone https://github.com/ueberBrot/vite-plus-webcontainer-repro.
- Run
pnpm install. - Run
pnpm run reproduce:wasi. - Observe that Vite+ cannot find either
./vite-plus.wasi.cjsor@voidzero-dev/vite-plus-wasm32-wasi.
System Info
StackBlitz WebContainer
$ node --version
v22.22.3
$ pnpm --version
8.15.6
$ pnpm run environment
> [email protected] environment /home/ueberBrot/vite-plus-webcontainer-repro
> vp env current
ELIFECYCLE Command failed with exit code 1.
Error: Cannot find native binding. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try `npm i` again after removing both package-lock.json and node_modules directory.
at Object.eval (/home/ueberBrot/vite-plus-webcontainer-repro/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs:882:19)
at Module._compile (node:internal/modules/cjs/loader:160:19302)
at Module._extensions..js (node:internal/modules/cjs/loader:160:20043)
at Module.load (node:internal/modules/cjs/loader:160:17661)
at Module._load (node:internal/modules/cjs/loader:160:15179)
at wrapModuleLoad (node:internal/modules/cjs/loader:160:4199)
at loadCJSModuleWithModuleLoad (node:internal/modules/esm/translators:174:3866)
at _0x504db8.evaluationFunction (node:internal/modules/esm/translators:174:3603)
Node.js v22.22.3
$ pnpm run reproduce
> [email protected] reproduce /home/ueberBrot/vite-plus-webcontainer-repro
> vp --version
ELIFECYCLE Command failed with exit code 1.
Error: Cannot find native binding. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try `npm i` again after removing both package-lock.json and node_modules directory.
at Object.eval (/home/ueberBrot/vite-plus-webcontainer-repro/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs:882:19)
at Module._compile (node:internal/modules/cjs/loader:160:19302)
at Module._extensions..js (node:internal/modules/cjs/loader:160:20043)
at Module.load (node:internal/modules/cjs/loader:160:17661)
at Module._load (node:internal/modules/cjs/loader:160:15179)
at wrapModuleLoad (node:internal/modules/cjs/loader:160:4199)
at loadCJSModuleWithModuleLoad (node:internal/modules/esm/translators:174:3866)
at _0x504db8.evaluationFunction (node:internal/modules/esm/translators:174:3603)
Node.js v22.22.3
Used Package Manager
pnpm
Logs
Local diagnostic environment:
macOS 26.6.2
Architecture: arm64
Node.js v24.18.0
vite-plus v0.3.0
$ NAPI_RS_FORCE_WASI=error node -e 'try { require("./node_modules/vite-plus/binding/index.cjs") } catch (error) { let current = error; let index = 0; while (current) { console.error("Cause " + index + ":"); console.error(current.stack || String(current)); current = current.cause; index += 1; } process.exit(1); }'
Cause 0:
Error: WASI binding not found and NAPI_RS_FORCE_WASI is set to error
at Object.<anonymous> (/private/tmp/vite-plus-webcontainer-repro.9X28Wk/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs:870:19)
at Module._compile (node:internal/modules/cjs/loader:1871:14)
at Object..js (node:internal/modules/cjs/loader:2002:10)
at Module.load (node:internal/modules/cjs/loader:1594:32)
at Module._load (node:internal/modules/cjs/loader:1396:12)
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
at Module.require (node:internal/modules/cjs/loader:1617:12)
at require (node:internal/modules/helpers:153:16)
at [eval]:1:7
at runScriptInThisContext (node:internal/vm:219:10)
Cause 1:
Error: Cannot find module '@voidzero-dev/vite-plus-wasm32-wasi'
Require stack:
- /private/tmp/vite-plus-webcontainer-repro.9X28Wk/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs
- /private/tmp/vite-plus-webcontainer-repro.9X28Wk/[eval]
at /private/tmp/vite-plus-webcontainer-repro.9X28Wk/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs:727:19
at Array.reduce (<anonymous>)
at createLoadErrorChain (/private/tmp/vite-plus-webcontainer-repro.9X28Wk/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs:720:17)
at Object.<anonymous> (/private/tmp/vite-plus-webcontainer-repro.9X28Wk/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs:875:19)
at Module._compile (node:internal/modules/cjs/loader:1871:14)
at Object..js (node:internal/modules/cjs/loader:2002:10)
at Module.load (node:internal/modules/cjs/loader:1594:32)
at Module._load (node:internal/modules/cjs/loader:1396:12)
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
at Module.require (node:internal/modules/cjs/loader:1617:12)
Cause 2:
Error: Cannot find module './vite-plus.wasi.cjs'
Require stack:
- /private/tmp/vite-plus-webcontainer-repro.9X28Wk/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs
- /private/tmp/vite-plus-webcontainer-repro.9X28Wk/[eval]
at /private/tmp/vite-plus-webcontainer-repro.9X28Wk/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs:727:19
at Array.reduce (<anonymous>)
at createLoadErrorChain (/private/tmp/vite-plus-webcontainer-repro.9X28Wk/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs:720:17)
at Object.<anonymous> (/private/tmp/vite-plus-webcontainer-repro.9X28Wk/node_modules/.pnpm/[email protected][email protected]/node_modules/vite-plus/binding/index.cjs:875:19)
at Module._compile (node:internal/modules/cjs/loader:1871:14)
at Object..js (node:internal/modules/cjs/loader:2002:10)
at Module.load (node:internal/modules/cjs/loader:1594:32)
at Module._load (node:internal/modules/cjs/loader:1396:12)
at wrapModuleLoad (node:internal/modules/cjs/loader:255:19)
at Module.require (node:internal/modules/cjs/loader:1617:12)
Validations
- Read the Contributing Guidelines.
- Check that there isn't already an issue for the same bug.
- Confirm this is a Vite+ issue and not an upstream issue (Vite, Vitest, tsdown, Rolldown, or Oxc).
- The provided reproduction is a minimal reproducible example.
- Linguagem predominante
- Rust
- Estrelas
- 6.5k
- Forks
- 297
- Merge médio
- 1d 3h
- PRs com merge (30d)
- 245
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de voidzero-dev/vite-plus
-
triage: failed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 71/100
voidzero-dev/vite-plus#3360 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
triage: not actionable
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
voidzero-dev/vite-plus#3296 · 1 comentário · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
pending triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 63/100
voidzero-dev/vite-plus#3235 ·
Mantenedores costumam responder em até 1 dia
-
Docker guide: the runtime stage needs libatomic1 for Node.js 25 and laterTalvez já em andamento @kshanxs assumiu há 13 dias. Abertadocumentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
voidzero-dev/vite-plus#3219 · 2 comentários · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
pending triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
voidzero-dev/vite-plus#2882 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de voidzero-dev/vite-plus
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
ScoopInstaller/Extras#19275 ·
Mantenedores costumam responder em até 1 dia
-
area:plugins kind:bug priority:p2 ready
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
Mantenedores costumam responder em até 1 dia
-
bug priority: medium ui
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
storytold/gridcraft#3496 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bip39: Mnemonic::new_from_phrase rejects phrases with extra or non-space whitespaceTalvez já em andamento @chukwudiikeh assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
Mantenedores costumam responder em até 1 dia