oven-sh / bun

Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one
https://bun.sh
Other
73.57k stars 2.72k forks source link

Vite 5.2.0 `Cannot find module @rollup/rollup-darwin-x64` on M3 Mac #11511

Open vaaski opened 4 months ago

vaaski commented 4 months ago

What version of Bun is running?

1.1.10+5102a9443

What platform is your computer?

Darwin 23.4.0 arm64 arm

What steps can reproduce the bug?

  1. bun x create-vite repro -t vue-ts
  2. cd repro
  3. bun i
  4. bun dev

What is the expected behavior?

It should run the vite server

What do you see instead?

`bun dev` output ``` ~/projects/repro ❯ bun dev $ vite /Users/user/projects/repro/node_modules/rollup/dist/native.js:59 throw new Error( ^ Error: Cannot find module @rollup/rollup-darwin-x64. 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 requireWithFriendlyError (/Users/user/projects/repro/node_modules/rollup/dist/native.js:59:9) at Object. (/Users/user/projects/repro/node_modules/rollup/dist/native.js:68:76) ... 3 lines matching cause stack trace ... at Module._load (node:internal/modules/cjs/loader:1065:12) at cjsLoader (node:internal/modules/esm/translators:318:15) at ModuleWrap. (node:internal/modules/esm/translators:258:7) at ModuleJob.run (node:internal/modules/esm/module_job:262:25) at async ModuleLoader.import (node:internal/modules/esm/loader:475:24) { [cause]: Error: Cannot find module '@rollup/rollup-darwin-x64' Require stack: - /Users/user/projects/repro/node_modules/rollup/dist/native.js at Module._resolveFilename (node:internal/modules/cjs/loader:1186:15) at Module._load (node:internal/modules/cjs/loader:1012:27) at Module.require (node:internal/modules/cjs/loader:1271:19) at require (node:internal/modules/helpers:123:16) at requireWithFriendlyError (/Users/user/projects/repro/node_modules/rollup/dist/native.js:41:10) at Object. (/Users/user/projects/repro/node_modules/rollup/dist/native.js:68:76) at Module._compile (node:internal/modules/cjs/loader:1434:14) at Module._extensions..js (node:internal/modules/cjs/loader:1518:10) at Module.load (node:internal/modules/cjs/loader:1249:32) at Module._load (node:internal/modules/cjs/loader:1065:12) { code: 'MODULE_NOT_FOUND', requireStack: [ '/Users/user/projects/repro/node_modules/rollup/dist/native.js' ] } } Node.js v22.2.0 error: script "dev" exited with code 1 ```

Additional information

When reproducing this I also ran into an issue with the install command.

`bun i` output ``` ~/projects/repro ❯ bun i bun install v1.1.10 (5102a944) ⚙️ esbuild [1/1] [esbuild] Failed to find package "@esbuild/darwin-x64" on the file system This can happen if you use the "--no-optional" flag. The "optionalDependencies" package.json feature is used by esbuild to install the correct binary executable for your current platform. This install script will now attempt to work around this. If that fails, you need to remove the "--no-optional" flag to use esbuild. [esbuild] Trying to install package "@esbuild/darwin-x64" using npm node:internal/errors:983 const err = new Error(message); ^ Error: Command failed: /Users/user/projects/repro/node_modules/esbuild/bin/esbuild --version at genericNodeError (node:internal/errors:983:15) at wrappedFn (node:internal/errors:537:14) at checkExecSyncError (node:child_process:889:11) at Object.execFileSync (node:child_process:925:15) at validateBinaryVersion (/Users/user/projects/repro/node_modules/esbuild/install.js:99:28) at /Users/user/projects/repro/node_modules/esbuild/install.js:286:5 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { status: null, signal: 'SIGKILL', output: [ null, Buffer(0) [Uint8Array] [], Buffer(0) [Uint8Array] [] ], pid: 19692, stdout: Buffer(0) [Uint8Array] [], stderr: Buffer(0) [Uint8Array] [] } Node.js v22.2.0 error: postinstall script from "esbuild" exited with 1 ```

Running bun i again does not show any errors. Interestingly, bun --bun dev does start the vite server as expected. But I feel like having to include the bun flag should not be the default.

I've tried the proposed CLI flags in #9876 but they unfortunately do not help.

vaaski commented 4 months ago

Update: I ran into the next similar issue with biome.

  1. bun add --dev --exact @biomejs/biome
  2. bun pm trust @biomejs/biome
  3. bunx @biomejs/biome init
output ``` ❯ bunx @biomejs/biome init node:internal/modules/cjs/loader:1189 throw err; ^ Error: Cannot find module '@biomejs/cli-darwin-x64/biome' Require stack: - /Users/user/projects/project/node_modules/@biomejs/biome/bin/biome at Module._resolveFilename (node:internal/modules/cjs/loader:1186:15) at Function.resolve (node:internal/modules/helpers:133:19) at Object. (/Users/user/projects/project/node_modules/@biomejs/biome/bin/biome:51:11) at Module._compile (node:internal/modules/cjs/loader:1434:14) at Module._extensions..js (node:internal/modules/cjs/loader:1518:10) at Module.load (node:internal/modules/cjs/loader:1249:32) at Module._load (node:internal/modules/cjs/loader:1065:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:158:12) at node:internal/main/run_main_module:30:49 { code: 'MODULE_NOT_FOUND', requireStack: [ '/Users/user/projects/project/node_modules/@biomejs/biome/bin/biome' ] } Node.js v22.2.0 ```

Works when including the --bun flag.

vaaski commented 4 months ago

I think this might because I somehow ended up with a x64 build of node on my arm64 Mac. Reinstalling a proper ARM version of node fixes this issue.

sal-jim commented 2 weeks ago

Ran into this issue. Tried removing node_modules/package-lock and reinstalling it doesnt work. Added an extra dependency in package-lock: "@rollup/rollup-linux-x64-gnu": "^4.9.2", - this didnt work either. using --bun flag worked.