Skip to content

Commit 6f54184

Browse files
author
Robert Mosolgo
committed
Merge pull request #215 from Hubbub/master
Include a stacktrace from execjs
2 parents ea47eca + a82fda0 commit 6f54184

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

lib/react/renderer.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ class Renderer
55

66
class PrerenderError < RuntimeError
77
def initialize(component_name, props, js_message)
8-
message = "Encountered error \"#{js_message}\" when prerendering #{component_name} with #{props}"
8+
message = ["Encountered error \"#{js_message}\" when prerendering #{component_name} with #{props}",
9+
js_message.backtrace.join("\n")].join("\n")
910
super(message)
1011
end
1112
end

test/react_renderer_test.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,15 @@ class ReactRendererTest < ActiveSupport::TestCase
3232
end
3333
expected_message_one = 'Encountered error "ReferenceError: Can\'t find variable: NonexistentComponent" when prerendering NonexistentComponent with {"error":true,"exists":false}'
3434
expected_message_two = 'Encountered error "ReferenceError: NonexistentComponent is not defined" when prerendering NonexistentComponent with {"error":true,"exists":false}'
35-
assert (expected_message_one == err.message || expected_message_two == err.message)
35+
assert (err.message.starts_with?(expected_message_one) || err.message.starts_with?(expected_message_two))
36+
end
37+
38+
test 'prerender errors include the error backtrace' do
39+
err = assert_raises React::Renderer::PrerenderError do
40+
React::Renderer.render("NonexistentComponent", {error: true, exists: false})
41+
end
42+
43+
assert (err.message.count("\n") > 2), "The error has a multi-line backtrace"
3644
end
3745

3846
test 'prerender errors are thrown when given a string' do
@@ -46,6 +54,6 @@ class ReactRendererTest < ActiveSupport::TestCase
4654
end
4755
expected_message_one = 'Encountered error "ReferenceError: Can\'t find variable: NonexistentComponent" when prerendering NonexistentComponent with {"error":true,"exists":false}'
4856
expected_message_two = 'Encountered error "ReferenceError: NonexistentComponent is not defined" when prerendering NonexistentComponent with {"error":true,"exists":false}'
49-
assert (expected_message_one == err.message || expected_message_two == err.message)
57+
assert (err.message.starts_with?(expected_message_one) || err.message.starts_with?(expected_message_two))
5058
end
5159
end

0 commit comments

Comments
 (0)