haxenode でエラー window is not defined

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. (/.../bin/haxenode.js:62:3) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.runMain (module.js:492:10) at process.startup.processNextTick.process._tickCallback (node.js:244:9)

こんなエラーが出ました。

いろいろ試したところ、Hoge クラスに @:keep@:expose をどちらも指定するとダメみたい。どちらか片方だけなら正常。 --dead-code-elimination をあきらめて、minify とかすればいいのかな。 @:keep@:expose は意味が被る、というか expose は keep を包括するような感じなので、@:expose だけでよさそうな気もします。

##参考