Skip to content

Resolve symlinks using Node resolution mechanism #3883

Open
@gaearon

Description

@gaearon

Copying my comment from #1107 since that issue is pretty crowded and I want it to be here instead.


Having read some discussions in nodejs/node#6537 and https://github.com/isaacs/node6-module-system-change I think we're actually already being inconsistent in how we handle symlinks.

Let's forget about the issue about compiling source code for a second. I feel like that can be solved by #1333 and thus is not the most important one here.

The important part here is that the resolution should match Node algorithm so that our webpack setup matches our test setup. I thought that was the case, but I was wrong.

Consider this structure:

my-comp
  index.js // already compiled
  package.json // react is a peer dependency

my-app
  node_modules
    my-comp // symlink to my-comp folder

It turns out that if my-comp doesn't declare a dependency on react, it can find React in the browser builds but not in tests.

screen shot 2018-01-21 at 12 25 54

screen shot 2018-01-21 at 12 26 06

We introduced this regression in #1359.

We probably missed it because if my-comp does explicitly depend on React (e.g. as a devDependency), the test passes (and in the browser we just get two Reacts).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions