@@ -254,29 +254,44 @@ const ttyServerPromise = chalkPromise.then(async (chalk) => {
254
254
const npmEntrypoint = fs . realpathSync ( `${ process . argv [ 1 ] } ` )
255
255
/**
256
256
* @param {string } filepath
257
- * @returns {string }
257
+ * @returns {string | null }
258
258
*/
259
259
function findRoot ( filepath ) {
260
260
if ( path . basename ( filepath ) === 'npm' ) {
261
261
return filepath
262
262
}
263
263
const parent = path . dirname ( filepath )
264
264
if ( parent === filepath ) {
265
- process . exit ( 127 )
265
+ return null
266
266
}
267
267
return findRoot ( parent )
268
268
}
269
269
const npmDir = findRoot ( path . dirname ( npmEntrypoint ) )
270
- const arboristLibClassPath = path . join ( npmDir , 'node_modules' , '@npmcli' , 'arborist' , 'lib' , 'arborist' , 'index.js' )
270
+ if ( npmDir === null ) {
271
+ console . error ( 'Unable to find npm cli install directory, this is potentiall a bug with socket-npm caused by changes to npm cli.' )
272
+ console . error ( `Searched parent directories of ${ npmEntrypoint } ` )
273
+ process . exit ( 127 )
274
+ }
275
+ let arboristLibClassPath
276
+ try {
277
+ arboristLibClassPath = path . join ( npmDir , 'node_modules' , '@npmcli' , 'arborist' , 'lib' , 'arborist' , 'index.js' )
278
+ } catch ( e ) {
279
+ console . error ( 'Unable to integrate with npm cli internals, this is potentially a bug with socket-npm caused by changes to npm cli.' )
280
+ process . exit ( 127 ) ;
281
+ }
271
282
272
- const npmVersion = process . env . NPM_VERSION . split ( '.' )
273
283
let npmlog
274
284
275
- if ( npmVersion [ 0 ] === '10' && npmVersion [ 1 ] >= '6' ) {
276
- const { log } = require ( path . join ( npmDir , 'node_modules' , 'proc-log' , 'lib' , 'index.js' ) )
277
- npmlog = log
278
- } else {
285
+ try {
279
286
npmlog = require ( path . join ( npmDir , 'node_modules' , 'npmlog' , 'lib' , 'log.js' ) )
287
+ } catch {
288
+ try {
289
+ const { log } = require ( path . join ( npmDir , 'node_modules' , 'proc-log' , 'lib' , 'index.js' ) )
290
+ npmlog = log
291
+ } catch {
292
+ console . error ( 'Unable to integrate with npm cli logging infrastructure, this is potentially a bug with socket-npm caused by changes to npm cli.' )
293
+ process . exit ( 127 ) ;
294
+ }
280
295
}
281
296
282
297
/**
0 commit comments