diff --git a/test-app/runtime/src/main/cpp/runtime/console/Console.cpp b/test-app/runtime/src/main/cpp/runtime/console/Console.cpp index 24bb449..6e10c5e 100644 --- a/test-app/runtime/src/main/cpp/runtime/console/Console.cpp +++ b/test-app/runtime/src/main/cpp/runtime/console/Console.cpp @@ -75,12 +75,27 @@ std::string transformJSObject(napi_env env, napi_value object) { // Check if the object has a toString method napi_has_named_property(env, object, "toString", &hasToString); + if (hasToString) { napi_get_named_property(env, object, "toString", &toStringFunc); if (napi_util::is_of_type(env, toStringFunc, napi_function)) { napi_value result; napi_call_function(env, object, toStringFunc, 0, nullptr, &result); auto value = ArgConverter::ConvertToString(env, result); + + bool is_error = false; + napi_is_error(env, object, &is_error); + if (is_error) { + napi_value stack; + napi_status status = napi_get_named_property(env, object, "stack", &stack); + if (status == napi_ok && !napi_util::is_null_or_undefined(env, stack)) { + auto stack_value = ArgConverter::ConvertToString(env, stack); + if (!stack_value.empty() && value.find(stack_value) == std::string::npos) { + value += "\n" + stack_value; + } + } + } + auto hasCustomToStringImplementation = value.find("[object Object]") == std::string::npos; if (hasCustomToStringImplementation) return value; }