29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
|
|
const { createRequire } = require('module');
|
|
const { pathToFileURL } = require('url');
|
|
const fs = require('fs');
|
|
const os = require('os');
|
|
const path = require('path');
|
|
function tryResolve(fromDir, pkg) {
|
|
try {
|
|
const req = createRequire(pathToFileURL(fromDir.replace(/\\/g,'/') + '/__probe__.js').href);
|
|
return req.resolve(pkg);
|
|
} catch (e) { return null; }
|
|
}
|
|
console.log('--- 沿 junction 链 ---');
|
|
let d = 'C:/Users/SJL/.dsh/profiles/web/node_modules/dsh-worktable/lib';
|
|
while (true) {
|
|
const r = tryResolve(d, 'ws');
|
|
if (r) { console.log('FOUND at', d, '->', r); break; }
|
|
const parent = d.replace(/[\\/][^\\/]+$/, '');
|
|
if (!parent || parent === d) { console.log('链走完未找到'); break; }
|
|
d = parent;
|
|
}
|
|
console.log('--- homedir profiles 兜底 ---');
|
|
const pd = path.resolve(os.homedir(), '.dsh', 'profiles');
|
|
console.log('profilesDir:', pd, 'exists:', fs.existsSync(pd));
|
|
for (const p of fs.readdirSync(pd, { withFileTypes: true })) {
|
|
const nm = path.resolve(pd, p.name, 'node_modules');
|
|
console.log(p.name, 'isDir:', p.isDirectory(), 'nmExists:', fs.existsSync(nm), 'ws:', tryResolve(nm, 'ws'), 'pty:', tryResolve(nm, 'node-pty'));
|
|
}
|