Skip to content

pnp: esbuild-wasm@0.15.1 panics when bundling a Yarn PnP project #2458

@merceyz

Description

@merceyz

Describe the bug

When using esbuild-wasm@0.15.1 to bundle a Yarn PnP project it panics with the following error:

⬥ [VERBOSE] Resolving import "./foo.js" in directory "/foo" of type "entry-point"

  Read 21 entries for directory "/"
  The file "/foo/package.json" exists
  The file "/foo/.pnp.cjs" exists
    Extracted JSON data from "/foo/.pnp.cjs"
  Read 10 entries for directory "/foo"
  Read 10 entries for directory "/foo"
  No "browser" map found in directory "/foo"
  Attempting to load "/foo/foo.js" as a file
    Checking for file "foo.js"
    Found file "foo.js"
  Read 10 entries for directory "/foo"
  Primary path is "/foo/foo.js" in namespace "file"

✘ [ERROR] panic: runtime error: invalid memory address or nil pointer dereference (while parsing "foo.js")

  debug.Stack (runtime/debug/stack.go:24)
  helpers.PrettyPrintedStack (internal/helpers/stack.go:9)
  bundler.parseFile.func1 (internal/bundler/bundler.go:178)
  panic (runtime/panic.go:884)
  os.OpenFile (os/file.go:341)
  os.Open (os/file.go:317)
  fs.(*realFS).readdir (internal/fs/fs_real.go:343)
  fs.(*realFS).ReadDirectory (internal/fs/fs_real.go:146)
  fs.(*zipFS).ReadDirectory (internal/fs/fs_zip.go:175)
  resolver.resolverQuery.loadAsFile (internal/resolver/resolver.go:1272)
  resolver.resolverQuery.loadAsFileOrDirectory (internal/resolver/resolver.go:1503)
  resolver.resolverQuery.resolveWithoutSymlinks (internal/resolver/resolver.go:732)
  resolver.(*resolver).Resolve (internal/resolver/resolver.go:412)
  bundler.RunOnResolvePlugins (internal/bundler/bundler.go:812)
  bundler.parseFile (internal/bundler/bundler.go:406)
  bundler.(*scanner).maybeParseFile (internal/bundler/bundler.go:1257)

1 error

Ref yarnpkg/berry#4732

To Reproduce

docker run --rm -it node:16.16.0 bash
mkdir foo
cd foo
yarn init -2
yarn set version 3.2.2
yarn add esbuild-wasm@0.15.1 lodash
printf "require('lodash')" > foo.js
yarn esbuild --bundle --log-level=verbose ./foo.js

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