Функция должна быть вызываемой - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть два файла js. Во первых я использую этот код:

var rightsRef = db.collection("users").doc(uid).collection("rights");
        if(createDocumentWithoutId(rightsRef, "readGrades", "false", null, null, null, null) === true) {
          window.location.href = "../public/main/main_index.html";
        }
        else {

        }  

Во втором файле js я использую этот код:

function createDocumentWithoutId(var databaseRef, var titleValue1, var contentValue1, var titleValue2, var contentValue2, var titleValue3, var contentValue3) {
  databaseRef.set({
    titleValue1: contentValue1,
    titleValue2: contentValue2,
    titleValue3: contentValue3,
  }).then(function() {
    return true;
  }).catch(function(error) {
    console.error("Error adding document: ", error);
    return false;
  });
}  

Чтобы я мог вызвать функцию второго js-файла, я «импортировал» их обоих в HTML-файл следующим образом:

    <script type="text/javascript" src="javascript1.js"></script>
<script type="text/javascript" src="../javascript2_folder/javascript2.js"></script>

Но я получаю эту ошибку: ReferenceError: createDocumentWithoutId is not defined

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

JS-файлы выполняются при загрузке, и в этом случае выполнение включает определение функций. Попробуйте поменять порядок загрузки ваших файлов или поставить какую-то проверку первого кода, например:

function amIDependentOnAnotherFile(){
  if (typeof functionInAnotherFile == 'undefined')
   return setTimeout(amIDependentOnAnotherFile, 5);
  doSomething();
}
0 голосов
/ 13 ноября 2018

Ваш первый файл JS полностью выполняется перед вторым. Это и является причиной вашей ошибки - функция во втором файле еще не загружена. Вы можете изменить порядок, который они определяют в вашем HTML, чтобы функция была определена до ее вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...