Проблема с импортом класса в Javascript - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу использовать наследование между классами, которые находятся в отдельных .js (но в той же папке), но у меня есть эти ошибки

Uncaught SyntaxError: Неожиданный идентификатор

Uncaught ReferenceError:TableWithFunction не определена

Вот мой код:

// Table.js

export default class Table {

    constructor(name, h_cols) {
       table_id = name + 'table';
       hidden_cols = h_cols;
       table = setTable();
    }

    setTable() {...};

    setColumnDefs() {...};

{

// TableWithFunction.js

import Table from 'Table';

class TableWithFunction extends Table {

    constructor (name, h_cols) {
        super(name, h_cols);
        selected_id = name + 'Selected';
    }
    //More methods ..
}

//test.blade.php (im using laravel framework)

<script src="{{ url('js/TableWithFunction.js') }}" ></script>
<script>
    roleTable = new TableWithFunction('role',[2, 4]);
    userTable = new TableWithFunction('user',[3]);
</script>

Я также попытался сделать import Table from 'Table.js'; вместо import Table from 'Table';

И я попытался изменитьTable.js использовал class Table { ... } export default Table вместо export default class Table {...}, и это, конечно, не помогло.

1 Ответ

0 голосов
/ 11 декабря 2018

Чтобы использовать модули ES6 в совместимом браузере, сценарий импорта должен быть включен в type="module".

<script src="{{ url('js/TableWithFunction.js') }}" type="module"></script>

Это предотвращает браузеры , не готовые для модулей , для загрузки кода, который будеттолько выдает ошибку.

Также доступно обратное:

<script src="only-for-ie.js" nomodule></script>

Этот сценарий будет игнорироваться браузерами, способными обрабатывать модули ES6.

...