1

.js ファイルの 1 つのモジュールをインポートし、Vaadin 14で .js ファイルを呼び出したいと考えています。残念ながら、インポートに苦労しており、ブラウザーで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でインポートしたモジュールが含まれています。モジュールは、package.jsonにもリストされてい"sip.js": "0.15.10"ます。

Web コンソール エラー:

client-4FB121A4CC0177A1068809F06428A755.cache.js:57 Uncaught ReferenceError: SIP is not defined at window.executesipcall (vaadin-bundle-6b322b28264dafdccb46.cache.js:4505) at Object.eval (eval at St (client-4FB121A4CC01cache7A106826.8AjsF:4505) 991)、:1:1)

Vaadin がインポートを認識しない理由はありますか? グローバルスコープでインポートされていないためですか(ここで言及)?

4

1 に答える 1

0

解決策を見つけました。の代わりにNodeJs を使用require()してモジュールをインポートする必要がありimportました。動作しますが、理由はわかりません。

sipcall.js:

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

require() とは何ですか?

于 2020-03-06T08:26:56.933 に答える