ReferenceError, если вызывается функция пакета NPM в Vaadin 14 - PullRequest
1 голос
/ 06 марта 2020

Я хочу импортировать модуль для одного из моих файлов. js и вызвать мой. js файл с Vaadin 14 . К сожалению, я борюсь с его импортом, и в браузере выбрасывается ReferenceError .

Мой взгляд:

@Route(value = "jstest", layout = MainView.class)
@PageTitle("jstest")
@JsModule("./sipcall.js")
@NpmPackage(value = "sip.js", version = "0.15.10")
public class SipJsTest extends Div {
    private Button b;
    public SipJsTest() {
        b = new Button();
        b.setText("Execute SIP.js");
        b.addClickListener(listener -> {
            Page page = UI.getCurrent().getPage();
            page.executeJs("executesipcall()");
        });
        add(b);
    }
}

sipcall. js (модуль назван так) расположен в frontend / sipcall.js / . Если я делаю простой вывод на консоль, функция вызывается правильно. Ошибка появляется, если я пытаюсь использовать импортированный модуль.

sipcall. js:

import "sip.js";

window.executesipcall = function() {
    var ua = new SIP.UA(...) // from the imported module, throws exception
}

node_modules / sip.js / содержит модуль, который я импортируется с @ NpmPackage . Модуль также указан в пакете . json с "sip.js": "0.15.10".

Ошибка веб-консоли:

client-4FB121A4CC0177A1068809F06428A755.cache. js: 57 Uncaught ReferenceError: SIP не определен в window.executesipcall (vaadin-bundle-6b322b28264dafdccb46.cache. js: 4505) в Object.eval (eval в St (client-4FB121A4CC0177A1068809F064281 1046: 99.ache). 1: 1)

Есть идеи, почему Ваадин не признает импорт? Это потому, что он не импортируется в глобальном масштабе (здесь упоминается )?

1 Ответ

0 голосов
/ 06 марта 2020

Я нашел решение. Мне пришлось использовать NodeJs 'require() для импорта модуля вместо import. Это работает, но я не уверен, почему.

sipcall. js:

window.executesipcall = function() {
    var sip = require("sip.js");
    var ua = new sip.UA(...)
}

Что требуется ()?

...