2016-03-24 11 views
0

lesen kann, ich habe zwei javascript.One ist zum Lesen von Bilddatei, die i ‚genannt register.js'.There ich habe ein js Modul wie folgtabgefangene Typeerror nicht Eigentum von undefined

var FileUpload=(function(fileElement){ 

    //code goes here other functions and stuff 

function fileread(event){ 

     //code goes here 

    } 
return 
     { 
     files:fileread// assign fileread as property and return 
     }; 



}(document.getElementById('up'))) 

ich hinzugefügt haben eine andere Datei ‚call.js‘ genannt, die das Fileupload-Objekt verwenden, wird die Datei, wenn ‚onChange‘ Ereignis eintritt

function load(){ 
     console.log(FileUpload.files); 
     document.getElementById('up').addEventListener('change',FileUpload.files,false); 
     } 
     window.onload=load; 

Aber wo ich laufe den Code erhalte ich die folgende lesen error.How ich diesen Fehler beheben kann?

create:115 Uncaught TypeError: Cannot read property 'files' of undefined

+0

Sie in Fileupload an die Last-Funktion übergeben müssen irgendwie ... heißt es, dass es nicht so finden, wie geht es vorbei Sie, dass in? Warum haben Sie es in zwei separaten Dateien? – JordanHendrix

+0

Ich möchte ein separates Modul für Datei-Upload-Funktionalität erstellen –

Antwort

0

Ich vermute, Sie module.exports und require verwenden vergessen haben. Am Ende des register.js hinzu:

module.exports = FileUpload; 

Zu Beginn call.js hinzufügen:

var FileUpload = require('./register'); 

Sie müssen ./register ändern Sie das Verzeichnis in Register.js zu sein. Die .js Erweiterung kann weggelassen werden, da Knoten Javascript-Dateien annimmt.

+0

Aber ich habe die beiden Skripte auf der gleichen Seite hinzugefügt. Würde es nicht so funktionieren? –

+0

Dies ist keine gute Antwort, erfordert nicht automatisch am Frontend arbeiten, es sei denn, er verwendet das richtige Build-Tool, dh Webpack ... – JordanHendrix

0

Das ist das Problem:

return 
     { 
     files:fileread// assign fileread as property and return 
     }; 

Semikolons in Javascript sind optional, damit es nicht wissen, dass Sie Rückkehr {Dateien: Fileread} wollen. Es denkt, dass die Rückgabe eine Aussage ist und {files: fileread}; ist eine andere Aussage.

Änderung dieser und alles sollte funktionieren:

return { 
    files:fileread// assign fileread as property and return 
}; 
Verwandte Themen