Skip to content

ExportsFieldPlugin is skipped when dependency is aliased #424

@wladco

Description

@wladco

Hi,

We encountered an issue where enhanced-resolver doesn't handle the exports field in package.json if the alias is used.


Steps to reproduce

  1. NPM Install enhanced-resolver and @brightspace-ui/lms-context-provider
  2. Excecute the code below
const { CachedInputFileSystem, ResolverFactory } = require("enhanced-resolve");
const path = require('path');
const fs = require('fs');

const myResolver = ResolverFactory.createResolver({
  alias: {
     '@brightspace-ui': path.resolve(__dirname, 'node_modules', '@brightspace-ui'),
  },
  fileSystem: new CachedInputFileSystem(fs, 2000)
});

myResolver.resolve({}, __dirname, '@brightspace-ui/lms-context-provider/client.js', {}, (err, filepath) => {
  if (err) console.error(err);
  else console.log(filepath);
});

Expected

C:\test\webpack-resolver-issue\node_modules\@brightspace-ui\lms-context-provider\src\client\client.js

Actual

details: "resolve '@brightspace-ui/lms-context-provider/client.js' in 'C:\\test\\webpack-resolver-issue'\n" +
    '  Parsed request is a module\n' +
    '  using description file: C:\\test\\webpack-resolver-issue\\package.json (relative path: .)\n' +
    "    aliased with mapping '@brightspace-ui': 'C:\\test\\webpack-resolver-issue\\node_modules\\@brightspace-ui' to 'C:\\test\\webpack-resolver-issue\\node_mo
dules\\@brightspace-ui/lms-context-provider/client.js'\n" +
    '      using description file: C:\\test\\webpack-resolver-issue\\package.json (relative path: .)\n' +
    '        using description file: C:\\test\\webpack-resolver-issue\\node_modules\\@brightspace-ui\\lms-context-provider\\package.json (relative path: ./clien
t.js)\n' +
    '          no extension\n' +
    "            C:\\test\\webpack-resolver-issue\\node_modules\\@brightspace-ui\\lms-context-provider\\client.js doesn't exist\n" +
    '          .js\n' +
    "            C:\\test\\webpack-resolver-issue\\node_modules\\@brightspace-ui\\lms-context-provider\\client.js.js doesn't exist\n" +
    '          .json\n' +
    "            C:\\test\\webpack-resolver-issue\\node_modules\\@brightspace-ui\\lms-context-provider\\client.js.json doesn't exist\n" +
    '          .node\n' +
    "            C:\\test\\webpack-resolver-issue\\node_modules\\@brightspace-ui\\lms-context-provider\\client.js.node doesn't exist\n" +
    '          as directory\n' +
    "            C:\\test\\webpack-resolver-issue\\node_modules\\@brightspace-ui\\lms-context-provider\\client.js doesn't exist"

Notes

If we use the browser field instead of the exports, we get the expected result.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions