Как использовать данные в объекте из одного файла JS в другом файле JS? - PullRequest
0 голосов
/ 29 апреля 2018

Я использую ES6 и пытаюсь экспортировать данные в методе с именем Users в другой метод в другом js-файле с именем:

users.js

 export default class Users {

   var User() {
    Newuser = {
        firstName: 'Tony',
        lastname: 'franklyn',
        email: `franky@gmail.com`,
        password: 'Franklin123'
    }

    return Newuser;
  }

}

login.js

import Users from '../data/user';

const newie = new Users();

export default class Signup {

    async Register() {

      await t
     .typeText(this.firstName,newie.firstName)

     }

  }

Всякий раз, когда моя программа выполняется, я получаю TypeError: Невозможно прочитать свойство 'firstName' из неопределенного.

Я действительно сбит с толку этим, заметьте, у меня не так много опыта.

1 Ответ

0 голосов
/ 29 апреля 2018

Конечно!

Проблема в том, что NewUsers заключен в метод с именем User(). Вместо newie.firstName должно быть: newie.User().firstName;

Пара вещей:

  1. Всегда определяйте свои переменные, предпочтительно с помощью const и let. Избегайте использования var. Это предотвратит загрязнение глобальной области и перезапись вашей переменной.

Поэтому вместо NewUsers должно быть:

export default class Users {

   // This is a method name. 
   // Methods do not use var, const or let
   User() {
   // This would be the variable. 
   // You would use const, because you are not
   // reassigning (using equals sign) its content.
    const Newuser = {
        firstName: 'Tony',
        lastname: 'franklyn',
        email: `franky@gmail.com`,
        password: 'Franklin123'
    }

    return Newuser;
  }

}
  1. Если вы хотите экспортировать данные, вам необязательно нужен класс. Это должно работать нормально:

users.js

module.exports = {
firstName: 'Tony',
        lastname: 'franklyn',
        email: `franky@gmail.com`,
        password: 'Franklin123'

}

Если вам нужно более одного пользователя, создайте массив:

module.exports = [{
    firstName: 'Tony',
            lastname: 'franklyn',
            email: `franky@gmail.com`,
            password: 'Franklin123'

    }, 
  {
firstName: 'Pedro',
            lastname: 'Smith',
            email: `smith@gmail.com`,
            password: 'Smithy123'

    }
}
]

А в login.js

// When you import Users, it will bring the properties you defined above.
import Users from '../data/user';


export default class Signup {

    async Register() {

      await t
     .typeText(this.firstName,Users.firstName)

     }

  }

// Если вы использовали многопользовательский подход, то:

Вместо Users.firstName вы будете использовать:

// Fraklyn    
Users[0].firstName

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