2016-03-24 5 views
0

У меня есть два javascript.One для чтения файла образа, который я назвал «register.js'.There у меня есть модуль JS вроде следующегонеперехваченное TypeError не может прочитать свойство неопределенного

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'))) 

я добавил другой файл под названием «call.js», который будет использовать объект FileUpload для чтения файла, когда событие «OnChange» происходит

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

Но где бы я запустить код я получаю следующее error.How я могу исправить эту ошибку?

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

+0

вам нужно передать в FileUpload функции нагрузки как-то ... он говорит, что он не может найти, что, как вы мимоходом, что в? почему это происходит в двух отдельных файлах? – JordanHendrix

+0

Я хочу создать отдельный модуль для функции загрузки файлов –

ответ

0

Я предполагаю, что вы забыли использовать module.exports и require. В конце register.js добавить:

module.exports = FileUpload; 

В начале call.js добавить:

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

Вам нужно будет изменить ./register быть каталог, register.js. Расширение .js можно опустить, поскольку узел принимает файлы javascript.

+0

Но я добавил два сценария на ту же страницу. Не работает ли это так? –

+0

это не очень хороший ответ, требуется автоматическая работа на передней панели, если он не использует правильный инструмент сборки, то есть Webpack ... – JordanHendrix

0

Это проблема:

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

запятой в JavaScript, не являются обязательными поэтому не знает, что вы хотите возвратных {файлов: FILEREAD}. Он думает, что return - это одно утверждение и {files: fileread}; - это другое утверждение.

Изменения к этому, и все должно работать:

return { 
    files:fileread// assign fileread as property and return 
}; 
Смежные вопросы