我想为我的 .js 文件之一导入一个模块,并使用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"
.
网络控制台错误:
client-4FB121A4CC0177A1068809F06428A755.cache.js:57 未捕获的 ReferenceError: SIP 未在 Object.eval 的 window.executesipcall (vaadin-bundle-6b322b28264dafdccb46.cache.js:4505) 处定义991),:1:1)
任何想法为什么 Vaadin 不识别进口?是不是因为它没有在全局范围内导入(这里提到)?