使用dart2js编译js interop错误 - 未捕获NoSuchMethodError:未找到方法: [英] js interop compiled with dart2js error - Uncaught NoSuchMethodError : method not found:

查看:96
本文介绍了使用dart2js编译js interop错误 - 未捕获NoSuchMethodError:未找到方法:的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我生成了一个示例Polymer Web项目。添加了以下js文件。



jslib.js

  function testfunction()
{
alert(test);
}

in clickcounter.dart我添加了依赖

  import'package:js / js.dart'as js; 

并更改increment()函数

  void increment(){
js.context.testfunction();
count ++;
}

在clickcounter.html中添加js文件导入

 < script src =jslib.jstype =text / javascript>< / script& 

并在主html文件中添加

 < script src =packages / browser / interop.js>< / script& 

在Dartium中执行时,它可以正常工作。
当我编译为javascript但是它给一个错误

  Uncaught NoSuchMethodError:method未找到:'Symbol(testfunction)'
接收者:'Proxy'的实例
参数:[] js_helper.dart:870


堆栈跟踪:
错误
在Object.wrapException(http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:4632:13)
在Proxy.Object .noSuchMethod $ 1(http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:33708:13)
在Proxy_noSuchMethod_closure.call $ 0(http://127.0.0.1: 3030 / testrun / out / web / testrun.html_bootstrap.dart.js:109612:46)
在Object.Proxy.static.Proxy__forward(http://127.0.0.1:3030/testrun/out/web/testrun .html_bootstrap.dart.js:109581:45)
at Proxy.noSuchMethod $ 1(http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:109492:14)
at Proxy.Object.testfunction $ 0(http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:56090:17)
在ClickCounter.increment $ 0(http ://127.0.0.1:3030 / testrun / out / web / testrun.html_bootstrap.dart.js:7080:50)
at cachedInvocation.invokeOn $ 2(http://127.0.0.1:3030/testrun/out /web/testrun.html_bootstrap.dart.js:6221:28)
at JsInstanceMirror._invoke $ 4(http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:12998) :35)
at JsInstanceMirror.invoke $ 3(http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:12963:17)


解决方案

尝试将您的引用添加到 interop.js



< script type =text / javascriptsrc =path / to / interop.js>< / script>
< script type =text / javascriptsrc =path / to / main.dart.js>< / script>
< script type =text / javascriptsrc =path / to / dart.js>< / script>

我从 Dart Issue#15065 ,它解决了与 dart:js library。


I generated a sample Polymer web project. Added following js file.

jslib.js

function testfunction()
{
alert("test");
}

in clickcounter.dart I added dependency

import 'package:js/js.dart' as js; 

and changed increment() function

void increment() {
    js.context.testfunction();
    count++;
}

In clickcounter.html added js file import

<script src="jslib.js" type="text/javascript"></script>

And in main html file added

<script src="packages/browser/interop.js"></script>

It works correctly when in executed in Dartium. When I compile it to javascript however it gives an error

Uncaught NoSuchMethodError : method not found: 'Symbol("testfunction")'
Receiver: Instance of 'Proxy'
Arguments: [] js_helper.dart:870


Stack Trace:
Error
at Object.wrapException (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:4632:13)
at Proxy.Object.noSuchMethod$1 (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:33708:13)
at Proxy_noSuchMethod_closure.call$0 (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:109612:46)
at Object.Proxy.static.Proxy__forward (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:109581:45)
at Proxy.noSuchMethod$1 (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:109492:14)
at Proxy.Object.testfunction$0 (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:56090:17)
at ClickCounter.increment$0 (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:7080:50)
at CachedInvocation.invokeOn$2 (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:6221:28)
at JsInstanceMirror._invoke$4 (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:12998:35)
at JsInstanceMirror.invoke$3 (http://127.0.0.1:3030/testrun/out/web/testrun.html_bootstrap.dart.js:12963:17)

解决方案

Try putting your reference to interop.js above that of the compiled dart file and dart.js:

<script type="text/javascript" src="path/to/interop.js"></script>
<script type="text/javascript" src="path/to/main.dart.js"></script>
<script type="text/javascript" src="path/to/dart.js"></script>

I learned this from Dart Issue # 15065 and it resolved a similar error I had with the dart:js library.

这篇关于使用dart2js编译js interop错误 - 未捕获NoSuchMethodError:未找到方法:的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆