2016-05-27 5 views
0

Ich habe zwei Dateien, eine namens Dateiname und die zweite namens app.js, beide Dateien sind auf der Serverseite. Von filename.js filder bin returing ich von ensureAuthentication Methode einen Wert String-Datei app.js, so exportieren i die Funktion:Rückgabewert zu app.js Datei in Knoten js

function ensureAuthentication(){ 
    return 'tesstestest'; 
} 
exports.ensureAuthentication = ensureAuthentication; 

in app.js Datei

var appjs = require('filename'); 
console.log(appjs.ensureAuthentication); 

Ergebnis haben folgende i ist immer undefiniert in der Konsole ??! Warum ist das eine Idee?

+0

wo Variable deklariert login? sollte es nicht appjs.ensureAuthentication sein? –

+0

siehe bearbeiten @SohaibFarooqi –

+0

verwende es wie 'appjs.ensureAuthentication()' –

Antwort

0

sollten Sie versuchen, dies in Ihrem app.js -

var login = require('filename'); 
console.log(login()); 

oder Sie können diese verwenden:

var login = require('filename')(); 
console.log(login); 

Erläuterung: Jedes Mal, wenn Sie exportieren, eine Funktion, die Exporte benutzen, müssen Sie ausführen es um den Rückgabewert davon zu erhalten.

0

Zwei Probleme mit Ihrem Code:

  1. Sie müssen sich mit einem relativen Pfad (Ankündigung der ./) verlangen:

    var appjs = require ('./ Dateiname');

  2. Um den String-Wert Sie ensureAuthentication als eine Funktion aufzurufen, müssen zu erhalten:

    console.log (appjs.ensureAuthentication());


UPDATE

Dieses Update behebt das screenshot posted in the comments.

Im Screenshot Sie in den Kommentaren eingefügt, müssen Sie die folgende Zeile:

module.exports = router 

dass ein verschiedene Exporte in die Modul-Objekt zuweist. Ihr lokaler Verweis auf exports ist nicht mehr dasselbe Objekt.

ändern, die

module.exports = exports = router 

zu

Linie, die den Verweis auf exports, die Sie als nächstes verwenden bewahren.

+0

Ich erhalte Fehler, wenn ich dies tue appjs.ensureAuthentication ist keine Funktion –

+0

und ersten Punkt habe ich schon so –

+0

Sind Sie sicher, dass der Code immer noch ist das selbe wie oben in filename beschrieben, wo Sie 'exports.ensureAuthentication = secureAuthentication' exportieren? – xianwill

0

Versuchen Sie folgendes:

var appjs = require('filename'); 
console.log(appjs.ensureAuthentication()); 

Anmerkung der() nach dem Funktionsaufruf. Dies wird deine Funktion ausführen. Der console.log() - Aufruf wird dann den zurückgegebenen Wert ausgeben.

+0

wie ich sagte dies wird durch folgenden Fehler: TypeError: appjs.ensureAuthentication ist keine Funktion –

0

Versuchen Sie dies, stellen Sie sicher, dass beide Dateien im selben Verzeichnis sind. Sie haben ein paar Fehler mit Ihrem Code.Fehlende Klammern und nicht korrekt in app.js importieren

filename.js

function ensureAuthentication(){ // You are missing the brackets here. return 'tesstestest'; } exports.ensureAuthentication = ensureAuthentication;

app.js

var appjs = require('./filename'); // You are missing the ./ here. console.log(appjs.ensureAuthentication()); // Logs 'tesstestest'

+0

Brackets wo es. Ich habe es gerade verpasst, als ich die Frage eintippte. Ihre Lösung ist die gleiche, die ich jetzt auf meiner Maschine habe, und es funktioniert nicht und verstehe immer noch nicht warum! –

+0

running> 'node app.js' Protokolle für mich auf der Konsole. Wie läuft es dir? –

+0

ja und ich verwende ich nodemon und das ist die Ausgabe Fr 27. Mai 2016 12:30:13 GMT + 0200 (CEST): ------- _: –

-1

Hier können Sie mit dem Arbeits Code gehen

Dateinamen. js

function ensureAuthentication(){ 
    return 'tesstestest'; 
} 

module.exports = { 
    ensureAuthentication : ensureAuthentication 
} 

app.js

var appjs = require('./utils/sample'); 

console.log(appjs.ensureAuthentication());