通过Parse.com使用dart2js输出和Cloud Code

时间:2016-01-02 18:08:59

标签: node.js dart dart2js

首先,我将javascript示例转换为dart。

JS

Parse.Cloud.define('hello', function(request, response) {
  response.success('Hello world');
});

DART

import 'dart:js' show allowInterop;
import 'package:js/js.dart' show JS;

@JS('Parse.Cloud.define')
external void define(String name, Function func);

void main() {
  define('hello', allowInterop((req, res) {
    res.success('Yeah!');
  }));
}

然后我使用dart2js(使用csp或不使用csp)编译它。

最后我运行parse deploy,我得到了

ReferenceError: self is not defined
    at <error: TypeError: Object #<error> has no method '__lookupGetter__'>
    at main.js:2539:9
    at init.currentScript (main.js:2519:7)
    at main.js:2534:5
    at main.js:2542:3

现在,我在这里......

我如何才能在parse.com上运行,这是我认为的nodejs env。

1 个答案:

答案 0 :(得分:1)

self实际上没有在parse.com提供的环境中定义,因此我在dart2js输出中定义了self,例如var self = this;

我收到一个新错误,但未定义约success$1。嗯,这是真的,我的代码仍然不完整...

Dart代码应该是这样的:

import 'dart:js' show allowInterop;
import 'package:js/js.dart' show JS, anonymous;

@JS('Parse.Cloud.define')
external void define(String name, Function func);

@JS()
@anonymous
class HttpResponse {
  external void success(String msg);
  external void error(String msg);
}

void main() {
  define('hello', allowInterop((req, HttpResponse res) {
    res.success('Yeah!');
  }));
}

现在,一切正常。我可以享受我的星期天。