diff --git a/vlib/builtin/js/builtin.js.v b/vlib/builtin/js/builtin.js.v index dd610feef7..09fa32d0c7 100644 --- a/vlib/builtin/js/builtin.js.v +++ b/vlib/builtin/js/builtin.js.v @@ -5,9 +5,14 @@ pub fn js_throw(s any) { #throw s } +# let globalPrint; +$if js_freestanding { + # globalPrint = globalThis.print +} + pub fn println(s string) { $if js_freestanding { - #print(s.str) + #globalPrint(s.str) } $else { #console.log(s.str) } @@ -23,7 +28,7 @@ pub fn print(s string) { pub fn eprintln(s string) { $if js_freestanding { - #print(s.str) + #globalPrint(s.str) } $else { #console.error(s.str) } diff --git a/vlib/v/gen/js/js.v b/vlib/v/gen/js/js.v index ee71ed2cf0..fc36d9f49d 100644 --- a/vlib/v/gen/js/js.v +++ b/vlib/v/gen/js/js.v @@ -1452,7 +1452,14 @@ fn (mut g JsGen) gen_method_decl(it ast.FnDecl, typ FnGenType) { g.stmts(it.stmts) g.writeln('}') - + for attr in it.attrs { + match attr.name { + 'export' { + g.writeln('globalThis.$attr.arg = ${g.js_name(it.name)};') + } + else {} + } + } if is_main { g.write(')();') } else if typ != .struct_method {