2

我在 DevMode 中有这个工作代码,但是当我在编译代码(实时)中运行它时,它会在 Javascript 浏览器控制台中引发错误:

代码:

MyService service = GWT.create(MyService.class);
// This works
service.createStuff(title.getText(), content.getText(), new MethodCallback<MyModel>() {
            @Override
            public void onSuccess(Method method, MyModel resp) {
                GWT.log("Response from server: " + resp);

            }
            @Override
            public void onFailure(Method method, Throwable exception) {
                GWT.log(exception.getMessage());
            }
        });
// This does not work
service.readStuff(id, new MethodCallback<MyModel>() {
        @Override
        public void onSuccess(Method method, MyModel model) {

        }
        @Override
        public void onFailure(Method method, Throwable exception) {
        }
    }); 

错误:

com.google.gwt.core.client.JavaScriptException: (TypeError): Cannot call method 'ef' of null
    at Unknown.nn(StackTraceCreator.java:168)
    at Unknown.tl(StackTraceCreator.java:421)
    at Unknown.SU(Exceptions.java:29)
    at Unknown.Hjb(SubmittedPage.java:91)
    at Unknown.qlb(AbstractRequestCallback.java:72)
    at Unknown.Nu(Request.java:287)
    at Unknown.qv(RequestBuilder.java:395)
    at Unknown.anonymous(XMLHttpRequest.java:287)
    at Unknown.Im(Impl.java:168)
    at Unknown.Lm(Impl.java:214)
    at Unknown.anonymous(Impl.java:57) 

我怎样才能至少调试这种问题?

4

2 回答 2

2

首先,您可以在“漂亮”模式下编译为 javascript,这不会产生混淆的 javascript。之后在浏览器中调试 javascript 就很简单了。

使用 Mojo 的 Maven GWT 插件,这是通过以下行完成的:

mvn gwt:compile -Dstyle=PRETTY

然而,在我看来,这与配置有关。也许某种注射变坏或没有进行......

于 2013-09-18T12:07:15.953 回答
0

首先,以 pretty 模式编译 js。但是,如果您不了解 GWT 编译器的详细信息,则可能很难扫描编译后的代码并猜测错误来自何处。

以愚蠢的方式做这件事可能更容易。注释并部署,直到您注释掉并因此找到失败的行!因为我不知道我会做的 GWT 编译器...

于 2013-09-18T12:17:13.797 回答