De acordo com a solução @anatoliy, no MacOS XI encontrei os caminhos de pesquisa fazendo
require('module')._resolveLookupPaths('myModule')
então eu obtenho os caminhos de pesquisa resolvidos
[ 'myModule',
[ '/Users/admin/.node_modules',
'/Users/admin/.node_libraries',
'/usr/local/lib/node' ] ]
Considerando que a
require('module')._resolveFilename('myModule')
não vai resolver o módulo que estava procurando de jeito nenhum, na verdade o mais louco é que _loadnão vai resolver o módulo:
> require('module')._load('myModule')
Error: Cannot find module 'myModule'
at Function.Module._resolveFilename (module.js:440:15)
at Function.Module._load (module.js:388:25)
at repl:1:19
at sigintHandlersWrap (vm.js:32:31)
at sigintHandlersWrap (vm.js:96:12)
at ContextifyScript.Script.runInContext (vm.js:31:12)
at REPLServer.defaultEval (repl.js:308:29)
at bound (domain.js:280:14)
at REPLServer.runBound [as eval] (domain.js:293:12)
at REPLServer.<anonymous> (repl.js:489:10)
enquanto a requirevontade:
> require('myModule')
mas eu não tenho este módulo em
myProject/node_modules/
myProject/node_modules/@scope/
/usr/local/lib/node_modules/
/usr/local/lib/node_modules/@scope
/usr/local/lib/node_modules/npm/node_modules/
/usr/local/lib/node_modules/npm/node_modules/@scope
$HOME/.npm/
$HOME/.npm/@scope/
então onde está este módulo ???
Primeiro eu tive que fazer um $ sudo /usr/libexec/locate.updatedb
Então depois de um café eu fiz locate myModuleou melhorlocate myModule/someFile.js
et voilà, descobri que estava em uma pasta pai do meu projeto, ou seja, fora da pasta raiz do meu projeto:
$pwd
/Users/admin/Projects/Node/myProject
$ ls ../../node_modules/myModule/
então você não pode evitar rm -rf ../../node_modules/myModule/e um novo npm install.
Posso argumentar que ninguém foi instruído npma varrer meu computador em busca de módulos em outro lugar além da pasta raiz do projeto onde deveria ser executado ou no caminho de pesquisa de módulos padrão.