diff --git a/workspaces/arborist/lib/arborist/build-ideal-tree.js b/workspaces/arborist/lib/arborist/build-ideal-tree.js index 2408f3741f297..3dc53d742f6ff 100644 --- a/workspaces/arborist/lib/arborist/build-ideal-tree.js +++ b/workspaces/arborist/lib/arborist/build-ideal-tree.js @@ -454,7 +454,7 @@ module.exports = cls => class IdealTreeBuilder extends cls { if (updateName) { globalExplicitUpdateNames.push(name) } - const dir = resolve(nm, namePath) + const dir = resolve(nm, name) const st = await lstat(dir) .catch(/* istanbul ignore next */ er => null) if (st && st.isSymbolicLink()) { diff --git a/workspaces/arborist/lib/arborist/load-actual.js b/workspaces/arborist/lib/arborist/load-actual.js index d2bff77214e1d..3f1eeebf56b31 100644 --- a/workspaces/arborist/lib/arborist/load-actual.js +++ b/workspaces/arborist/lib/arborist/load-actual.js @@ -1,6 +1,6 @@ // mix-in implementing the loadActual method -const { relative, dirname, resolve, join, normalize } = require('path') +const { relative, dirname, resolve, join, normalize, posix } = require('path') const rpj = require('read-package-json-fast') const { readdirScoped } = require('@npmcli/fs') @@ -361,7 +361,7 @@ module.exports = cls => class ActualLoader extends cls { async [_loadFSChildren] (node) { const nm = resolve(node.realpath, 'node_modules') try { - const kids = await readdirScoped(nm) + const kids = await readdirScoped(nm).then(list => list.map(i => posix.join(i))) return Promise.all( // ignore . dirs and retired scoped package folders kids.filter(kid => !/^(@[^/]+\/)?\./.test(kid)) @@ -410,8 +410,8 @@ module.exports = cls => class ActualLoader extends cls { break } - const entries = nmContents.get(p) || - await readdirScoped(p + '/node_modules').catch(() => []) + const entries = nmContents.get(p) || await readdirScoped(p + '/node_modules') + .catch(() => []).then(list => list.map(i => posix.join(i))) nmContents.set(p, entries) if (!entries.includes(name)) { continue