Skip to content

Result differs from Node's require.resolve when using basedir option with symlinks #295

Open
@j-christoffersen

Description

Hi, Ive noticed an issue that arises when using this package alongside npm link or yarn link - when resolving from a linked dependency's directory as basedir, this package will resolve to a module in the linked packages node_modules. This is in contrast to Node's require.resolve, which will resolve to the root level node_modules (same as if the package wasn't linked).

For example, if resolve-example depends on a package test-pkg, test-pkg itself depends on lodash, and I link resolve-example to test-pkg using yarn link, here's what I see after running the following

const resolve = require('resolve/sync')
let opts = { basedir: '/Users/jacksonchristoffersen/resolve-example/node_modules/test-pkg', preserveSymlinks: true }

console.log(require.resolve('lodash', opts))
// /Users/jacksonchristoffersen/resolve-example/node_modules/lodash/lodash.js

console.log(resolve('lodash', opts))
// /Users/jacksonchristoffersen/resolve-example/node_modules/test-pkg/node_modules/lodash/lodash.js

opts = { basedir: '/Users/jacksonchristoffersen/resolve-example/node_modules/test-pkg', preserveSymlinks: false }

console.log(require.resolve('lodash', opts))
// /Users/jacksonchristoffersen/resolve-example/node_modules/lodash/lodash.js

console.log(resolve('lodash', opts))
// /Users/jacksonchristoffersen/test-pkg/node_modules/lodash/lodash.js

I'd expect these results to match for each value of opts

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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