HaxeでつくるWebアプリ開発(node.js + Express) | 深追い Fukaoi.org を参考に、haxenodeを使ってみたときにハマったこと。
import js.Node;
class RootNode {
static function main() {
var server = Node.http.createServer( function(
req:NodeHttpServerReq, res:NodeHttpServerResp){
res.setHeader("Content-Type","text/plain");
res.writeHead(200);
res.end(Hoge.print());
}
);
server.listen(1337,"localhost");
trace( 'Server running at http://127.0.0.1:1337/' );
}
}
@:keep
@:expose
class Hoge {
public static function print():String {
return "Hello World.\n";
}
}
こんな感じでサンプル作って、
node rootnode.js
を実行したところ、
/.../bin/haxenode.js:53
var o = window;
^
ReferenceError: window is not defined
at $hxExpose (/.../bin/haxenode.js:53:10)
at /.../bin/haxenode.js:13:1
at Object.
こんなエラーが出ました。
いろいろ試したところ、Hoge クラスに @:keep
と @:expose
をどちらも指定するとダメみたい。どちらか片方だけなら正常。
--dead-code-elimination をあきらめて、minify とかすればいいのかな。
@:keep
と @:expose
は意味が被る、というか expose は keep を包括するような感じなので、@:expose だけでよさそうな気もします。
##参考