ตามโซลูชัน @anatoliy บน MacOS XI พบว่าเส้นทางการค้นหากำลังทำอยู่
require('module')._resolveLookupPaths('myModule')
ดังนั้นฉันจึงได้รับเส้นทางการค้นหาที่แก้ไขแล้ว
[ 'myModule',
[ '/Users/admin/.node_modules',
'/Users/admin/.node_libraries',
'/usr/local/lib/node' ] ]
ในขณะที่
require('module')._resolveFilename('myModule')
จะไม่แก้ไขโมดูลที่ฉันกำลังมองหาอีกต่อไปอันที่จริงสิ่งที่บ้าคลั่งคือการ_load
จะไม่แก้ไขโมดูล:
> 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)
ในขณะที่require
จะ:
> require('myModule')
แต่ฉันไม่มีโมดูลนี้
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/
แล้วโมดูลนี้อยู่ที่ไหน ???
ก่อนอื่นฉันต้องทำ$ sudo /usr/libexec/locate.updatedb
หลังจากนั้นหลังจากดื่มกาแฟฉันก็ทำได้locate myModule
ดีกว่านี้locate myModule/someFile.js
et voilàปรากฏว่ามันอยู่ในโฟลเดอร์หลักของโปรเจ็กต์ของฉันเช่นนอกโฟลเดอร์รูทโปรเจ็กต์ของฉัน:
$pwd
/Users/admin/Projects/Node/myProject
$ ls ../../node_modules/myModule/
ดังนั้นคุณจึงไม่สามารถหลีกเลี่ยงการและสดrm -rf ../../node_modules/myModule/
npm install
ฉันสามารถโต้แย้งว่าไม่มีใครสั่งnpm
ให้สแกนคอมพิวเตอร์ของฉันในการค้นหาโมดูลที่อื่นนอกจากโฟลเดอร์รูทโปรเจ็กต์ของฉันซึ่งควรจะทำงานหรือในเส้นทางการค้นหาโมดูลเริ่มต้น