Skip to content

Commit 0c9534f

Browse files
committedSep 14, 2017
fix(ssr): fix bundleRenderer Promise rejection regression
1 parent 5376dab commit 0c9534f

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed
 

‎src/server/bundle-renderer/create-bundle-runner.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export function createBundleRunner (entry, files, basedir, runInNewContext) {
106106
// slightly differently.
107107
let runner // lazy creation so that errors can be caught by user
108108
let initialContext
109-
return (userContext = {}) => new Promise(resolve => {
109+
return (userContext = {}) => new Promise((resolve, reject) => {
110110
if (!runner) {
111111
const sandbox = runInNewContext === 'once'
112112
? createSandbox()
@@ -143,7 +143,7 @@ export function createBundleRunner (entry, files, basedir, runInNewContext) {
143143

144144
const res = runner(userContext)
145145
if (typeof res.then === 'function') {
146-
res.then(exposeStylesAndResolve)
146+
res.then(exposeStylesAndResolve).catch(reject)
147147
} else {
148148
exposeStylesAndResolve(res)
149149
}
+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default () => {
2+
return Promise.reject(new Error('foo'))
3+
}

‎test/ssr/ssr-bundle-render.spec.js

+19
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,15 @@ function createAssertions (runInNewContext) {
7575
})
7676
})
7777

78+
it('renderToString catch Promise rejection', done => {
79+
createRenderer('promise-rejection.js', { runInNewContext }, renderer => {
80+
renderer.renderToString(err => {
81+
expect(err.message).toBe('foo')
82+
done()
83+
})
84+
})
85+
})
86+
7887
it('renderToStream catch error', done => {
7988
createRenderer('error.js', { runInNewContext }, renderer => {
8089
const stream = renderer.renderToStream()
@@ -85,6 +94,16 @@ function createAssertions (runInNewContext) {
8594
})
8695
})
8796

97+
it('renderToStream catch Promise rejection', done => {
98+
createRenderer('error.js', { runInNewContext }, renderer => {
99+
const stream = renderer.renderToStream()
100+
stream.on('error', err => {
101+
expect(err.message).toBe('foo')
102+
done()
103+
})
104+
})
105+
})
106+
88107
it('render with cache (get/set)', done => {
89108
const cache = {}
90109
const get = jasmine.createSpy('get')

0 commit comments

Comments
 (0)
Please sign in to comment.