2016-03-28 8 views
2

In node Konsole ich tue: require('path') oder require('assert') => wie genau herauszufinden, welche Datei mit dem Befehl (der absolute Pfad zur Datei)Wie der genauen Pfad wissen, dass wurde in Datei erforderlich()

geladen wurde

Ich konnte nirgendwo eine entscheidende Antwort finden und ich konnte nicht selbst dazu kommen ... Ich dachte, es wäre einfacher als es scheint ...

+0

Suchen Sie im Online-PHP-Handbuch nach realpath(). :-) –

Antwort

1

Ich denke nicht, dass das so einfach ist wie Sie hofften, aber mit dem Objekt können Sie dies tun:

// Load up some modules 
var _ = require('lodash'); 
var natural = require('natural'); 

// These are where Node will go looking for the modules above 
console.log('Paths:'); 
console.log(require.main.paths); 

// You can print out the id of each module, which is the path to its location 
console.log('Module IDs:'); 
require.main.children.forEach((module) => { 
    console.log(module.id); 
}); 

Ausgang:

$ node index.js 

Paths: 
[ '/Users/tyler/Desktop/js_test/node_modules', 
    '/Users/tyler/Desktop/node_modules', 
    '/Users/tyler/node_modules', 
    '/Users/node_modules', 
    '/node_modules' ] 

Module IDs: 
/Users/tyler/Desktop/js_test/node_modules/lodash/lodash.js 
/Users/tyler/Desktop/js_test/node_modules/natural/lib/natural/index.js 

Soweit ich die Modul-IDs sagen kann, werden in der Reihenfolge sein, dass Sie require ihnen, so sollten Sie für dynamisch, was auch immer Sie durch die Modul-IDs mit ihren Indizes arbeiten können oder suchen sind auf der Suche nach.

+0

Danke, aber das funktioniert nicht für mich, weil 'require.main' nicht definiert ist ... weißt du warum? – davidhq

+0

Ich würde nur 'console.log (require)' und sehen, wie das Objekt aussieht – Tyler

+0

ja, wenn ich es tun, sehe ich, dass 'main' Eigenschaft ist es" undefined ".. ist das abnormal? Kannst du einfach Knoten ausführen und dasselbe tun? Was ist der Wert von 'require.main'? – davidhq